2013-03-07 26 views
5

mogę odwiedzić stronę internetową z pliku JavaScript na czele HTMLusunąć funkcję javascript z Greasemonkey

<script language="javascript" src="javscript.js"></script> 

Kod wewnątrz tego pliku jest:

// 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; 

Chcę wyłączyć/usunąć/zamień tę funkcję na Greasemonkey.

Próbowałem go

unsafeWindow.update = function(){} 

bez rezultatu! (nie ma błędów w konsoli)

Czy istnieje sposób na zabicie tej funkcji?

+0

Zobacz czy odpowiedź na [to pytanie] (http://stackoverflow.com/questions/4064035/greasemonkey-overriding-website-functions) pracuje dla Ciebie. Nie używałem GreaseMonkey przez jakiś czas, ale wydaje się, że ma to sens. –

+1

Czy to na Firefox 2, ze starszym Greasemonkey, jak na poprzednie pytania? –

+0

próbowałem kod i dodano alert ("TEST"); kod utworzyłby w głowie, ale nie uruchamia "testu". – bernte

Odpowiedz

8

Nie jest jasne, czy update jest funkcją globalną. Jeśli tak nie jest, to podejście nie zadziała.

Ale można przesłonić obsługi przyciśnięcie z:

unsafeWindow.document.onkeypress = function(){}; 



Dla ogólnego, dużej mocy drodze do selektywnego blokowania lub zastąpić dowolny JS (w Firefoksie) używać @run-at document-start i the checkForBadJavascripts function, tak:

// ==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."); 
} 

See this answer, for more information on checkForBadJavascripts.

+0

KOCHAM CIĘ BROCK ADAMS: D unsafeWindow.document.onkeypress = function() {}; działa idealnie: D zawiera tę część do starego skryptu i działa idealnie! Mam nadzieję, że ta część jest definitywnie zakończona: D przetestuję to w przyszłym tygodniu na terminalu i dam ci znać. niż możemy dokończyć tę część i wypić piwo .. lub dwa: D DZIĘKI – bernte

+0

nie można używać checkForBadJavascripts, ponieważ terminal nie ma połączenia z Internetem! – bernte

+1

Nie ma za co! Pamiętaj, że pytania dotyczące przepełnienia stosu nie są "częścią" jakiegokolwiek projektu, nad którym pracujesz. Chodzi o jeden, specyficzny, programistyczny problem. –

Powiązane problemy