Javascript 从Greasemonkey中删除事件处理程序
有一个页面在页面脚本中定义了一个悬停事件,如下所示:Javascript 从Greasemonkey中删除事件处理程序,javascript,jquery,greasemonkey,Javascript,Jquery,Greasemonkey,有一个页面在页面脚本中定义了一个悬停事件,如下所示: $(".post.fade").hover(function () { $(this).addClass("over"); },function () { $(this).removeClass("over"); }); 我想删除那个处理器,因为它很烦人。但是,尽管$(.post.fade”).unbind()从Firebug控制台内部工作,而不是从Greasemonekey。我确信jQuery加载正确,因为$(“.post
$(".post.fade").hover(function () {
$(this).addClass("over");
},function () {
$(this).removeClass("over");
});
我想删除那个处理器,因为它很烦人。但是,尽管$(.post.fade”).unbind()代码>从Firebug控制台内部工作,而不是从Greasemonekey。我确信jQuery加载正确,因为$(“.post.fade”).remove():
可以工作
我想Greasemonkey没有访问页面事件处理程序之类的权限。我试过不安全的窗户,但还是不起作用
有办法吗
编辑:
显然,解决方案是将代码放在$(document.ready()
中。但不知道为什么。是的,unsafeWindow仍然是必需的。显然,解决方案是将代码放入$(document).ready()中。但不知道为什么。是的,unsafeWindow仍然是必需的。这可能是一个愚蠢的问题,但你已经放弃了jQuery document ready函数中的.unbind()。是吗?@Christian Varga:不,我没有,现在我有了,它可以工作了,但只适用于unsafeWindow。为什么呢?我还以为Greasemonkey会在“DOM ready”上开火呢?或者这与“ready”不同?我猜greasemonkey在DOM ready上启动,但仍然在jQuery文档就绪之前启动。因此,在绑定之前调用unbind。不过我可能错了:请你把你的解决方案向下移动到一个答案,这样我们就可以从未回答的列表中删除这个问题了吗?谢谢