【问题标题】:Opera userscript is loading too oftenOpera 用户脚本加载太频繁
【发布时间】:2012-04-21 19:13:08
【问题描述】:

我制作了用户脚本。我在 Opera 11.62 上对此进行了测试。我有一个代码:

(
    function() {
        var headID = document.getElementsByTagName("head")[0];         
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.id = 'myjQuery';
        newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
        headID.appendChild(newScript);

        newScript.addEventListener('load', function (e) {
            jQuery (
                function($) {
                    alert('loaded');
                }
            );          
        },false);

        newScript.removeEventListener('load');
    }
)();

我的问题是它显示警报消息的次数过多, 每次在警报标题中使用不同的域。

我知道这是 Facebook 和广告窗口的错。
我可以在加载网站上的所有脚本后加载用户脚本吗?

【问题讨论】:

    标签: javascript jquery opera userscripts


    【解决方案1】:

    问题似乎在于 Opera 正在为每个 iframe 触发脚本。将此代码添加到脚本顶部应该可以清除它:

    if (window.top != window.self)  //-- Don't run on frames or iframes.
        return;
    


    此外,您是否按照 Opera 期望的方式设置脚本的目标也不清楚。

    除非您是 running the script in Greasemonkey mode,否则请确保您的代码由域/URL 感应包装,如下所示:

    if (location.hostname.indexOf('example.com') != -1) {
        // YOUR CODE HERE
    }
    

    "Loading scripts" in the Opera manual

    【讨论】:

    • 非常有帮助,谢谢 :) 如果我对这个脚本有问题,我写在这里。
    • 嗨,关于使用 Stackoverflow 的小提示:请将上述答案标记为“已接受”。这有助于我们知道问题已得到解答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多