Javascript 禁用Greasemonkey中的所有单击事件不会';行不通
我正在尝试使用JQuery禁用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
$("*").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,回答这个问题,我会投赞成票。