1

我正在尝试使用 firefox 的greasemonkey扩展来覆盖我访问的网站上的一些JavaScript 事件。

例如,我想在模糊事件绑定到窗口元素时显示一条消息,无论我访问什么页面。

我认为这很容易。但是要在每种情况下都使用它要困难得多,因为根据网站使用的库,JavaScript 事件似乎存储在不同的位置。

这是我在greasemonkey用户脚本中进行的测试:

window.onload = function(event) {    
    // Handle pure JS
    if (window.onblur) {
       console.log('There is a blur event on the window element of this page');
    }

    // Handle jQuery
    if (window.jQuery) {
        var jExpando = window[window.jQuery.expando];

        if (jExpando.events.blur) {
            console.log('There is a blur jQuery event on the window element of this page');
        }
    }
}

这适用于使用纯 JavaScript 或 jQuery 的每个页面,但我无法捕获其他库(如 Mootools、Prototype 等)的模糊事件侦听器......

因此,这是非常糟糕的代码,考虑到我必须自己处理所有现有的 JavaScript 库,而且我不知道该怎么做。

有没有办法让所有事件侦听器绑定到特定的 JavaScript 对象(无论用于附加它们的库),以便我可以覆盖其中的一些?

4

1 回答 1

2

大多数库都使用 addEventListener,因此您需要使用自己的函数覆盖它。请务必保留对原始 addEventListener 方法的引用,以便仍然可以添加事件。

我在这里有一个示例 Greasemonkey 脚本:http: //userscripts.org/scripts/show/174829

它会监听所有事件并告诉您添加了哪些事件。显然,您可以修改它以使“模糊”事件不注册。

于 2013-09-04T13:00:46.827 回答