Javascript 禁用Greasemonkey中的所有单击事件不会';行不通

Javascript 禁用Greasemonkey中的所有单击事件不会';行不通,javascript,jquery,greasemonkey,sandbox,Javascript,Jquery,Greasemonkey,Sandbox,我正在尝试使用JQuery禁用Greasemonkey脚本中页面上的所有单击事件,如下所示: $("*").unbind("click"); $("[onclick]").removeAttr("onclick"); Jquery使用以下命令加载到greasemonkey脚本中 // @require http://code.jquery.com/jquery-1.10.1.min.js 当我从Firefox或Firebug控制台手动运行它时,它就会工作。 但这对Greasemonkey

我正在尝试使用JQuery禁用Greasemonkey脚本中页面上的所有单击事件,如下所示:

$("*").unbind("click");
$("[onclick]").removeAttr("onclick"); 
Jquery使用以下命令加载到greasemonkey脚本中

// @require  http://code.jquery.com/jquery-1.10.1.min.js
当我从Firefox或Firebug控制台手动运行它时,它就会工作。
但这对Greasemonkey不起作用

有什么问题吗?
我怎么能从greasemonkey那里做到这一点

当我从Firefox或Firebug控制台手动运行它时,它就会工作。
但这对Greasemonkey不起作用

由于Greasemonkey通常在包装函数中运行脚本,因此页面使用的jQuery与脚本中的jQuery不同。要么这样,要么用另一个函数覆盖jQuery函数。
因此,脚本中的
.unbind()
无法删除页面上的侦听器,因为它们是使用不同的jQuery函数添加的

当您在Firebug控制台中运行它时,它会工作,因为Firebug控制台将使用页面中的jQuery函数,而不是您的Greasemonkey脚本

要解决这个问题,只需使用页面中的jQuery函数来解除侦听器的绑定。
我们可以使用
unsafeWindow
访问页面的窗口对象

unsafeWindow.$("*")
    .unbind("click")
    .off("click")
    .removeAttr("onclick");
注意:这将只删除jQuery添加的事件侦听器。

若要删除由
.addEventListener()
添加的侦听器,您必须hi-jack该方法来侦听对它的调用,然后对其进行筛选,以便不添加单击事件。

我发现了您的问题。。。您需要使用页面的原生jQuery函数来解除侦听器的绑定<代码>取消安全窗口。$('*')。取消绑定('click')。关闭('click')@JoeSimmons,回答这个问题,我会投赞成票。