编程语言
首页 > 编程语言> > javascript – 使用Chrome扩展程序取消绑定点击事件?

javascript – 使用Chrome扩展程序取消绑定点击事件?

作者:互联网

我正在尝试制作一个扩展,解除网站本身添加的点击事件的绑定.

该网站使用jQuery,这将使这非常简单:

jQuery('a[rel]').unbind('click');

问题是我的扩展(使用“content_scripts”)无法访问网站的jQuery对象,因此没有取消绑定的事件功能.我可以在我的扩展中包含一个jQuery,但这没有用,因为jQuery将’data’存储在jQuery对象中(而不是在DOM元素中).我的jQuery不会存储这些事件.

还有另外一种方法吗?它不一定非常漂亮.也许没有“content_scripts”?

解决方法:

var unbind_event_listeners = function (node) {
    var parent = node.parentNode;
    if (parent) {
        parent.replaceChild(node.cloneNode(true), node);
    } else {
        var ex = new Error("Cannot remove event listeners from detached or document nodes");
        ex.code = DOMException[ex.name = "HIERARCHY_REQUEST_ERR"];
        throw ex;
    }
};

只需调用unbind_event_listeners(a_node)来取消绑定节点中的任何侦听器.这将适用于文档中除文档本身之外的每个节点.至于窗口,你运气不好. unbind_event_listeners(document.documentElement)应该删除附加到文档中节点的大多数事件侦听器.

在[rel]的情况下,你想要这样做:

var nodes = document.querySelectorAll("a[rel]"), i = nodes.length;
while (i--) {
    unbind_event_listeners(nodes.item(i));
}

标签:javascript,events,onclick,unbind
来源: https://codeday.me/bug/20190630/1339591.html