繁体   English   中英

如何在不访问其创建上下文的情况下删除JS事件侦听器?

[英]How can I remove a JS event listener without access to the context in which it was created?

我的公司使用Confluence作为其内部Wiki,这很好,除了编辑器绑定了一些键盘快捷键之外,这使我无所适从。 特别是,当我希望它遵守“ kill line”的系统默认行为时,它将^ K用作“插入链接”。

我已经找到了插入侦听器的相关代码:

$("#markupTextarea").select(function () {
    AJS.Editor.storeTextareaBits(true);
}).keyup(function (e) {
    AJS.Editor.contentChangeHandler();

    if (e.ctrlKey) {
        if (e.keyCode == 75) {// bind ctrl+k to insert link
            return openLinkPopup(e);
        }
        if (e.keyCode == 77) {// bind ctrl+m to insert image
            $("#editor-insert-image").click();
            return false;
        }
    }
}).keydown(function (e) {
    // prevent firefox's default behaviour
    if (e.ctrlKey && e.keyCode == 75) {
        return AJS.stopEvent(e);
    }
}).change(function () {
    AJS.Editor.contentChangeHandler();
});

对于上下文,似乎他们使用的是TinyMCE的自定义版本。 理想情况下,我希望使用用于这些事件侦听器的Chrome用户脚本,但我什至无法通过在Chrome JS控制台中对它们执行操作来使它们消失。

我尝试过的事情(大多是在其他人的建议下;我并不是一个真正的JS黑客):

$('markupTextarea').unbind('select') -说Object #<HTMLTextAreaElement> has no method 'unbind'

$('markupTextarea').removeEventListener不起作用,因为我没有名称来引用这些侦听器

我几乎没有主意。

您的$不是jQuery。

jQuery('#markupTextarea').unbind('select')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM