Ace: 禁用编辑器的选项

创建于 2011-05-23  ·  18评论  ·  资料来源: ajaxorg/ace

类似于 textarea 的 'disabled' 属性。

它将类似于只读模式,只是不允许用户与编辑器进行交互。 因此,光标和任何线标记都将被隐藏。
@gissues :{“订单”:73.29192546583863,“状态”:“积压”}

最有用的评论

啊,我现在明白了。
但是应该禁用多少编辑器功能取决于具体的用例。
我认为在这两种情况下都不应该禁用选择和聚焦编辑器的能力。 虚拟视口对于显示输出很有用,但浏览器选择不能使用它。 对于代码示例,能够做到ctrl+a ctrl+c通常很好。

隐藏光标和行高亮

editor.setOptions({
    readOnly: true,
    highlightActiveLine: false,
    highlightGutterLine: false
})
editor.renderer.$cursorLayer.element.style.opacity=0

使编辑器不可选项卡

editor.textInput.getElement().tabIndex=-1
 or
editor.textInput.getElement().disabled=true

禁用所有快捷方式

editor.commands.commmandKeyBinding={}

我也可以为 $mouseHandler 和 textInput 添加销毁方法以完全禁用它们

所有18条评论

这是否已在任何地方实施? 我也会发现这个功能非常有用。

这个的用例是什么? 我不想将它添加到核心,因为它很少使用且易于实现

就像是

editor.container.style.pointerEvents="none"
editor.container.style.opacity=0.5 // or use svg filter to make it gray
editor.renderer.setStyle("disabled", true)
editor.blur()

或这个

var cover = document.createElement("div")
editor.container.appendChild(cover)
cover.style.cssText = "position:absolute;\
top:0;bottom:0;right:0;left:0;\
background:rgba(150,150,150,0.5);\
z-index:100"
cover.addEventListener("mousedown", function(e){e.stopPropagation()}, true)

会工作。

目的不是让它在视觉上看起来被禁用,目的是消除用户与之交互的能力。 即他们不能控制光标,(更好的是,光标不存在)。
这只是一种更严格的只读类型,而不是“禁用”。 这在使用编辑器显示代码示例或网页上运行程序的输出时会很方便。 虽然这可能不是编辑器的理想用途,但它的语法突出显示和通常看起来不错的功能使其成为用于此类事情的有吸引力的选择。

这两个代码示例都没有真正做到这一点。 他们都没有删除光标,虽然他们在不让用户控制光标方面做得很好,但焦点可以通过标签转到编辑器上。

啊,我现在明白了。
但是应该禁用多少编辑器功能取决于具体的用例。
我认为在这两种情况下都不应该禁用选择和聚焦编辑器的能力。 虚拟视口对于显示输出很有用,但浏览器选择不能使用它。 对于代码示例,能够做到ctrl+a ctrl+c通常很好。

隐藏光标和行高亮

editor.setOptions({
    readOnly: true,
    highlightActiveLine: false,
    highlightGutterLine: false
})
editor.renderer.$cursorLayer.element.style.opacity=0

使编辑器不可选项卡

editor.textInput.getElement().tabIndex=-1
 or
editor.textInput.getElement().disabled=true

禁用所有快捷方式

editor.commands.commmandKeyBinding={}

我也可以为 $mouseHandler 和 textInput 添加销毁方法以完全禁用它们

太好了,有我想要的效果。 我同意根据具体用例的不同要求,但是有几个选项来禁用光标或快捷方式等可能会很方便。

此外,上面的最后一行代码似乎完全停止了编辑器显示任何内容。 :/

此外,上面的最后一行代码似乎完全停止了编辑器显示任何内容。 :/

你的意思是editor.commands.commmandKeyBinding={}吗? 那会很奇怪

谢谢你!

谢谢,绝对需要一个选项来禁用编辑器!

嗨,你实现了 $mouseHandler 销毁器吗? 我有点迷路(这里是新手)。 或者有什么办法可以禁用它? 感谢编辑器禁用 btw :-)

@夜翼
editor.renderer.$cursorLayer.element.style.opacity=0
现在看来 $cursorLayer 已经不是 VirtualRenderer 的属性了。
当我的编辑器处于“只读”状态时,我想隐藏光标,我尝试了你给出的方法,但它不起作用,因为 $cursorLayer 不是 VirtualRenderer 的属性;有没有其他方法可以隐藏光标?

我发现VirtualRenderer中有两种方法,hideCursor()和setCursorStyle(),我尝试以下面的方式使用它们。但它也不起作用。
this._editor.renderer.hideCursor();
this._editor.renderer.setCursorStyle("opacity: 0;");
我用错了吗?

是否正在进行中? 我想在焦点离开时禁用编辑器。

同样在这里! 我想使用 renderer.hideCursor() 方法,但它似乎不起作用。 我试图在我的编辑器初始化块和changeCursor事件中调用它,但我无法让它工作。

对于仍想禁用光标的人,请在编辑器元素上使用 css3 属性pointer-events: none;

我如何禁用编辑器,仍然只是一个新的反应开发人员? 请提供任何帮助

对于仍想禁用光标的人,请在编辑器元素上使用 css3 属性pointer-events: none;

你如何禁用编辑器?

对于仍想禁用光标的人,请在编辑器元素上使用 css3 属性pointer-events: none;

你如何禁用编辑器?

editor.setOptions({
    readOnly: true,
})

像魅力一样工作

2020 年 9 月 23 日,星期三,晚上 10:27 Nehal Hasnayeen [email protected]
写道:

对于仍想禁用光标的人,请使用 css3 属性指针事件:
没有; 在编辑器元素上。

你如何禁用编辑器?

编辑器.setOptions({
只读:真,
})


您收到此消息是因为您发表了评论。
直接回复此邮件,在 GitHub 上查看
https://github.com/ajaxorg/ace/issues/266#issuecomment-698073286 ,或
退订
https://github.com/notifications/unsubscribe-auth/ALIR2LMEV5BHDXPXO7RT5BTSHKVAPANCNFSM4AESJK3A
.

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

vbguyny picture vbguyny  ·  5评论

christianbs picture christianbs  ·  3评论

featurecat picture featurecat  ·  4评论

BoasE picture BoasE  ·  4评论

aslushnikov picture aslushnikov  ·  4评论