使用Greasemonkey删除javascript函数

ber*_*nte 5 javascript greasemonkey function

我在HTML的头部访问了一个带有javascript文件的网站

<script language="javascript" src="javscript.js"></script>
Run Code Online (Sandbox Code Playgroud)

该文件中的代码是:

// keypress management 
if (document.layers) document.captureEvents(Event.KEYPRESS)
function update(e) {        
    if (document.all) {             // Explorer
        if (event.keyCode==13) document.forms[0].submit();  // 13 = ENTER
        else if (event.keyCode==26) runHelp(hplk);          // 26 = CTRL+Z
        return;
    } else {                                                // mozilla
        if (e.which==13) document.forms[0].submit();        // 13 = ENTER
        else if (e.which==26) runHelp(hplk);                // 122 = CTRL+Z     
        return;         
    }
}
document.onkeypress=update;
Run Code Online (Sandbox Code Playgroud)

我想用Greasemonkey禁用/删除/替换此功能.

我试过了

unsafeWindow.update = function(){}
Run Code Online (Sandbox Code Playgroud)

没有结果!(在控制台中没有错误)

有没有办法杀死这个功能?

Bro*_*ams 8

目前尚不清楚这update是一个全球性的功能.如果不是,那么这种方法将不起作用.

但您可以使用以下方式覆盖按键处理程序:

unsafeWindow.document.onkeypress = function(){};
Run Code Online (Sandbox Code Playgroud)


对于选择性地阻止或替换任何JS(在Firefox上)的一般,高效方式,使用@run-at document-startcheckForBadJavascripts函数,如下所示:

// ==UserScript==
// @name        _Replace select javascript on a page
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @require     https://gist.github.com/raw/2620135/checkForBadJavascripts.js
// @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.
*/

checkForBadJavascripts ( [
    [   false,
        /document\.onkeypress\s*=\s*update/,
        function () {
            addJS_Node (myKeypressFunction.toString() );
            addJS_Node ('document.onkeypress = myKeypressFunction;');
        }
    ]
] );


function myKeypressFunction (evt) {
    /*  DO WHATEVER HERE BUT USE NO GREASEMONKEY FUNCTIONS INSIDE
        THIS FUNCTION.
    */
    console.log ("Keypress function fired.");
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此答案checkForBadJavascripts.