2016-07-08 70 views
-1

我的新手到JS/Greasemonkey的,并有一定的难度调试这个脚本:太多的递归错误使用checkForBadJavascripts()

注:脚本解析网站的HTML,找到SCRIPT标签和更改脚本运行之前的内容。

// ==UserScript== 
// @name  JustPaste.it CheckForBadScript 
// @namespace Mkhoul 
// @description Test 01 
// @include  https://justpaste.it/* 
// @version  1 
// @require https://greasyfork.org/scripts/12317-checkforbadjavascripts-js/code/checkForBadJavascriptsjs.js?version=73234 
// @run-at document-start 
// @grant GM_addStyle 
// ==/UserScript== 


/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. MIKE MIKE MIKE 
*/ 

function replaceTargetJavascript (scriptNode) { 
    var scriptSrc = scriptNode.textContent; 
    scriptSrc  = scriptSrc.replace (
     "meta,script,object,applet,iframe,option,embed,span[size|face],pre,font[style|face],h2[style],h1[style],h3[style],h[style],input,textarea,submit", 

     "dummyoption" 
    ); 

    addJS_Node (scriptSrc); 
} 

checkForBadJavascripts ([ 
    [false, /invalid_elements/, replaceTargetJavascript] 
]); 

它把我扔在控制台: “太多递归”

http://i.imgur.com/x6rj73t.png

然后指向:https://greasyfork.org/scripts/12317-checkforbadjavascripts-js/code/checkForBadJavascriptsjs.js文件

http://i.imgur.com/F9agQMT.png

最后一个错误“ReferenceError:initTinyMCE未定义”似乎是由于前2个错误引起的。

`

从这里:How to alter this javascript with Greasemonkey?一切都应该在脚本中很好地工作。

我不明白为什么我有那些2“太多的递归”错误?

回答

0

checkForBadJavascripts添加一个事件侦听beforescriptexecute该反应的任何脚本元素被添加,包括那些你addJS_node 检查正在运行补充。这就是为什么递归是无限的。

为了解决这个问题,您需要首先确保脚本包含使用indexOf的违规文本。只有在这种情况下,将其替换并添加脚本addJS_Node