首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在我的GreaseMonkey脚本中加载两次jQuery

问为什么在我的GreaseMonkey脚本中加载两次jQuery
EN

Stack Overflow用户
提问于 2011-05-04 07:26:09
回答 1查看 2.3K关注 0票数 8

由于某种原因,我的Firefox4+GreaseMonkey脚本加载jQuery两次。我复制粘贴了下面的代码片段,"test“提示显示了两次。

问候

代码语言:javascript
复制
var $;

// Add jQuery
(function(){
    if (typeof unsafeWindow.jQuery == 'undefined') {
        var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
            GM_JQ = document.createElement('script');

        GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
        GM_JQ.type = 'text/javascript';
        GM_JQ.async = true;

        GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
    }
    GM_wait();
})();

// Check if jQuery's loaded
function GM_wait() {
    if (typeof unsafeWindow.jQuery == 'undefined') {
        window.setTimeout(GM_wait, 100);
    } else {
        $ = unsafeWindow.jQuery.noConflict(true);
        letsJQuery();
    }
}

// All your GM code must be inside this function
function letsJQuery() {
    alert("test");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-04 07:52:11

这可能是因为目标页面正在加载框架或iframes。

将以下行添加到脚本的代码部分的顶部:

代码语言:javascript
复制
if (window.top != window.self)  //-- Don't run on frames or iframes
    return;

而且,如果你只是在使用FF + GM,那就不用费心去加载jQuery了。通用汽车现在可以使用较新的jQuery版本。

只需添加一行,如:

代码语言:javascript
复制
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js

添加到脚本的元数据块中。jQuery将被复制到您的本地机器上并从那里运行--消除了脚本运行时有时可能出现的几秒钟的延迟。

如果你使用像TamperMonkey这样的模拟GM的扩展,这样的脚本就可以在Chrome中运行。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5876874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档