【问题标题】:Greasemonkey script blocking other scripts of website [duplicate]Greasemonkey脚本阻止网站的其他脚本[重复]
【发布时间】:2014-02-09 17:42:44
【问题描述】:

我的 Greasemonkey 脚本完全按照我的意愿工作,但它以某种方式阻止了网站本身的 javascript。他们只是不再工作了。

我使用非常有用的waitForKeyElements() 在某个容器加载后开始一些操作。

什么是干扰其他脚本?

// @require     https://gist.github.com/raw/2625891/waitForKeyElements.js
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant           none
// ==/UserScript==

var newText = 'changed';

// changes after loading .containerid
waitForKeyElements (
    "#containerid", renameTop
);

function renameTop() {
    var searchlinkTop = document.getElementById('containerid'); 
        searchlinkTop.innerHTML = newText;  
}

// some normal changes

function waitForKeyElements (
// ... the script's content

【问题讨论】:

    标签: javascript jquery ajax greasemonkey


    【解决方案1】:

    "jQuery in Greasemonkey 1.0 conflicts..."
    问题是@grant none。这是 Greasemonkey 的一个非常很糟糕的“功能”,它保证你会遇到冲突和错误。你很幸运这一次它是如此明显和直接。

    @grant none 更改为@grant GM_addStyle。这将恢复沙盒并消除冲突。

    【讨论】:

    • 哇,谢谢!它适用于这个脚本。
    • 哇,谢谢!它非常适合我的小脚本。但是我有另一个更大的脚本,几个月来也遇到了这个问题。当然,我也只是在那里尝试过你的建议,但它破坏了整个脚本......?这种方法有什么例外吗?更大的脚本使用例如// @require github.com/sizzlemctwizzle/GM_config/raw/master/gm_config.js GM_xmlhttpRequest({method: "GET", url: 'ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', onload: ...;}}); GM_registerMenuCommand(...); window.addEventListener("加载",Gm_main,false); $('div.twitter').remove();
    • 第二个脚本使用了几个GM_ 函数。您需要为每个 GM_ 函数添加一个 @grant 指令。除此之外,为第二个脚本打开一个新问题(在选中此答案作为答案之后)。
    • 谢谢! A 将所有授权添加到第二个脚本,但它仍然不起作用。原来它只是在我尝试修改后加载容器的内容时​​才起作用。不知道为什么,但我解决了它......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2016-08-31
    • 2013-11-05
    • 2018-08-17
    相关资源
    最近更新 更多