微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/jquery/180696.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐