【问题标题】:How do I disable line selection on gutter click in ACE editor?如何在 ACE 编辑器中单击装订线时禁用行选择?
【发布时间】:2015-06-18 13:02:15
【问题描述】:

我正在尝试禁用所有用户与 ace 编辑器的交互。我设法通过以下设置停止了大多数交互:

codeEditor.setReadOnly(true);
codeEditor.setHighlightActiveLine(false);
codeEditor.setHighlightGutterLine(false);
codeEditor.container.style.pointerEvents = "none";
codeEditor.renderer.$cursorLayer.element.style.opacity = 0;

但是,虽然现在大部分交互功能都已禁用,但装订线中的 mousedown 事件仍然有效。例如,当您单击装订线时,它仍会选择该行上的文本。其他事件,例如双击全选或代码折叠似乎也有效。你可以在这里查看: 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");

你有什么想法吗?感谢您的耐心等待!

【问题讨论】:

    标签: javascript ace-editor


    【解决方案1】:

    你可以这样做

    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" 样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2016-08-08
      • 2015-11-25
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多