Greasemonkey Jquery干扰?

可能重复:
Greasemonkey 1.0中的jQuery与使用jQuery的网站冲突

看来如果我的任何一个greasemonkey脚本都有如下所示的行,我会在包含jquery的网站上出错。 我不确定为什么,但我注意到一些javascript事件完全没有解雇。 (例如关于SO我不能添加评论)。

我可以在脚本中排除SO,但是有更好的解决方案吗? 如果jquery存在,也许我应该在测试后动态添加jquery。 如何解决此问题以及如何在不使用jquery的情况下将jquery脚本标记添加到正文?

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js 

Greasemonkey 1.0彻底改变了沙盒的工作方式 ,破坏了成千上万的脚本。 另请参阅, Greasemonkey 1.0中的jQuery与使用jQuery的网站冲突 。

这是一个巨大的问题,Greasemonkey的首席开发人员表达了完全不愿以合理的方式解决它。

要解决此问题,请将沙箱恢复到您的脚本,并通过编辑元数据块以结束以下行来解决$冲突:

 // @grant GM_addStyle // ==/UserScript== /*- The @grant directive is needed to work around a major design change introduced in GM 1.0, It restores the sandbox. */ 

指定@grant值(非none )重新激活沙箱。


您也可以考虑切换到Scriptish ,它在过去提供了卓越的function和性能,并且不会受到这种新沙箱行为的影响。

到目前为止, Scriptish还没有发布破坏其大部分安装基础的更新。

只有在尚未包含jQuery时才需要包含jQuery。 所以你需要进行第一行检查。 如果包含它,则运行脚本(如果未包含)添加类似行以包含它然后循环检查function。 像这样的东西:

 var wrote = false, runScript = function(){ if(typeof(jQuery) === 'undefined'){ if(!wrote){ wrote = true; document.write(''); } setTimeout(runScript, 50); }else{ //your script goes here } }; runScript(); 

唯一的问题是如果google的jquery没有启动。