2014-02-09 77 views
1

我的Greasemonkey脚本完全按照我希望的方式工作,但它以某种方式阻止网站本身的JavaScript。他们只是不工作了。Greasemonkey脚本阻止网站的其他脚本

我使用非常有用的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 

回答

1

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

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

+0

哇,谢谢!它适用于此脚本。 –

+0

哇,谢谢!它适用于我的小脚本。 但我还有另一个更大的脚本,几个月来也遭受这个问题。当然,我也尝试过你的建议,但它打破了整个剧本......?这种方法有没有例外? 较大的脚本使用例如 // @require http://github.com/sizzlemctwizzle/GM_config/raw/master/gm_config.js GM_xmlhttpRequest({method:“GET”, url:'http://ajax.googleapis.com/ajax/ libs/jquery/1.3.2/jquery.min.js', onload:...;}}); GM_registerMenuCommand(...); window.addEventListener(“load”,Gm_main,false); $('div.twitter')。remove(); –

+0

第二个脚本使用了几个'GM_'函数。您需要为每个'GM_'函数添加'@ grant'指令。除此之外,请为第二个脚本打开一个新问题(将此答案标记为答案后)。 –