@ require-ing jQuery覆盖页面的$变量

前端之家收集整理的这篇文章主要介绍了@ require-ing jQuery覆盖页面的$变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的脚本文件中使用此行为我的Greasemonkey脚本要求jQuery:
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

而且效果很好;我可以使用$(‘#id’)来访问DOM.

但是,“真实”页面的$变量被修改(其中$是jQuery 1.2.xx):
我收到一个错误,$.include没有定义.

我认为Greasemonkey的沙盒模型会阻止目标页面的变量被覆盖?

如何确保包含javascript库不会影响“真实”网站,而只影响我的Greasemonkey脚本?

解决方法

Greasemonkey 1.0,radically changed the way the sandbox works,破坏了成千上万的脚本.另见,jQuery in Greasemonkey 1.0 conflicts with websites using jQuery.

这是一个很大的问题,我希望你能和我一起在the principle bug report for this issue表达你的观点/经验.

同时,将沙箱恢复到您的脚本,并通过编辑Metadata Block以以下行结束来解决$冲突:

// @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,它在过去提供了卓越的功能性能,并且不会受到这种新沙箱行为的影响.

猜你在找的jQuery相关文章