如何禁用 ACE 编辑器中的装订线单击时的行选择?
How do I disable line selection on gutter click in ACE editor?
我正在尝试禁用所有用户与 ace 编辑器的交互。我设法通过以下设置停止了大部分互动:
codeEditor.setReadOnly(true);
codeEditor.setHighlightActiveLine(false);
codeEditor.setHighlightGutterLine(false);
codeEditor.container.style.pointerEvents = "none";
codeEditor.renderer.$cursorLayer.element.style.opacity = 0;
但是,虽然现在禁用了大部分交互性,但装订线上的 mousedown 事件仍然有效。例如,当您单击一条装订线时,它仍然 select 显示该行上的文本。其他事件,如双击 select 全部或代码折叠似乎也有效。你可以在这里查看:
http://jsfiddle.net/squarePenguin/zhpms1mm/
我试图删除排水沟上的听众,但似乎没有任何效果。这是我尝试过的一切:
codeEditor.getSession().removeAllListeners("guttermousedown");
codeEditor.getSession().removeAllListeners("gutterclick");
codeEditor.getSession().removeAllListeners("gutterdblclick");
codeEditor.getSession().removeAllListeners("guttermousemove");
codeEditor.getSession().removeAllListeners("click");
codeEditor.getSession().removeAllListeners("mousedown");
你有什么想法吗?感谢您的耐心等待!
你可以用
stop = function(e) {e.stop()}
editor.on("guttermousedown", stop, true);
editor.on("gutterclick", stop, true);
editor.on("gutterdblclick", stop, true);
editor.on("guttermousemove", stop, true);
editor.on("click", stop, true);
editor.on("mousedown", stop, true);
codeEditor.getSession().removeAllListeners
不起作用,因为鼠标事件是在编辑器而非会话上分派的,并且 removeAllListeners 不会删除 defaultHandlers
codeEditor.container.style.pointerEvents = "none";
不起作用,因为 ace 中的某些元素具有 pointerEvents="auto"
样式。
我正在尝试禁用所有用户与 ace 编辑器的交互。我设法通过以下设置停止了大部分互动:
codeEditor.setReadOnly(true);
codeEditor.setHighlightActiveLine(false);
codeEditor.setHighlightGutterLine(false);
codeEditor.container.style.pointerEvents = "none";
codeEditor.renderer.$cursorLayer.element.style.opacity = 0;
但是,虽然现在禁用了大部分交互性,但装订线上的 mousedown 事件仍然有效。例如,当您单击一条装订线时,它仍然 select 显示该行上的文本。其他事件,如双击 select 全部或代码折叠似乎也有效。你可以在这里查看: http://jsfiddle.net/squarePenguin/zhpms1mm/
我试图删除排水沟上的听众,但似乎没有任何效果。这是我尝试过的一切:
codeEditor.getSession().removeAllListeners("guttermousedown");
codeEditor.getSession().removeAllListeners("gutterclick");
codeEditor.getSession().removeAllListeners("gutterdblclick");
codeEditor.getSession().removeAllListeners("guttermousemove");
codeEditor.getSession().removeAllListeners("click");
codeEditor.getSession().removeAllListeners("mousedown");
你有什么想法吗?感谢您的耐心等待!
你可以用
stop = function(e) {e.stop()}
editor.on("guttermousedown", stop, true);
editor.on("gutterclick", stop, true);
editor.on("gutterdblclick", stop, true);
editor.on("guttermousemove", stop, true);
editor.on("click", stop, true);
editor.on("mousedown", stop, true);
codeEditor.getSession().removeAllListeners
不起作用,因为鼠标事件是在编辑器而非会话上分派的,并且 removeAllListeners 不会删除 defaultHandlers
codeEditor.container.style.pointerEvents = "none";
不起作用,因为 ace 中的某些元素具有 pointerEvents="auto"
样式。