Domanda

Sul sito c'è il codice del genere (il suo sito on LAN)

<script language="JavaScript" type="text/javascript">         
    alert("ble");
</script>

cerco di disabilitare tale avviso con GM. Stavo cercando di fare questo

unsafeWindow.alert=function() {};

ma vedo l'allarme e ottenere questo errore

Error: uncaught exception: [Exception... "Component is not available"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: file:///C:/Documents%20and%20Settings/arokitnicki/Dane%20aplikacji/Mozilla/Firefox/Profiles/sm4bsods.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js :: anonymous :: line 377"  data: no]

Come disattivare tale avviso?

P.S. questo è NON è un javascript domanda, ma una Greasemonkey questione.

Modifica

Il suo sito web dell'azienda, quindi non posso incollare il codice vero e proprio

<head>
    <script>    
        dojo.require("dojo.back");
        dojo.back.init(); 
    </script>
</head>
<body onload="someMethod()">
    <iframe></iframe>
    <script>         
        alert("bla");
    </script>
</body>

Ci sono anche alcuni script e dichiarazioni CSS nell'intestazione.

È stato utile?

Soluzione

Aggiornamento: Per le versioni moderne di Tampermonkey, Violentmonkey, Greasemonkey (ma fortemente consigliato per evitare di GM 4 +) :
È possibile intercettare alert() nella maggior parte dei casi utilizzando @run-at document-start. Ad esempio, caricare questo script e visita il la pagina di prova :

// ==UserScript==
// @name    _Overwrite Alert
// @match   *://output.jsbin.com/*
// @grant   none
// @run-at  document-start
// ==/UserScript==

var alrtScope;
if (typeof unsafeWindow === "undefined") {
    alrtScope = window;
} else {
    alrtScope = unsafeWindow;
}

alrtScope.alert = function (str) {
    console.log ("Greasemonkey intercepted alert: ", str);
};

Si noti che se si è in esecuzione Tampermonkey , è possibile blocco avvisi in modo più efficace con il passaggio a Inject Mode: Instant :
Tampermonkey Impostazioni => Config mode: Advanced => Sperimentale => modalità di inserimento. Instant


Se lo script richiede funzioni GM_ , è necessario impostare @grant diverso da none. In questo caso l'uso exportFunction() in questo modo:

// ==UserScript==
// @name            _Overwrite Alert
// @match           *://output.jsbin.com/*
// @grant           GM_addStyle
// @run-at          document-start
// ==/UserScript==

function myAlert (str) {
    console.log ("Greasemonkey intercepted alert: ", str);
}
unsafeWindow.alert   = exportFunction (myAlert, unsafeWindow);


Old risposta, per Greasemonkey prima di agosto 2011:

unsafeWindow.alert=function() {}; funziona bene in alcune situazioni.

Ma, se questo è davvero il codice sulla pagina, quindi non sarà in grado di fermare tale avviso con Greasemonkey.

Questo è dovuto al fatto che allerta si attiva durante il caricamento della pagina e prima dell'evento DOMContentLoaded -. Che è quando Greasemonkey è sparato


Caricare questo script GM:

// ==UserScript==
// @name            Overwrite Alert
// @description     Overwrites alert()
// @include         http://jsbin.com/*
// ==/UserScript==

unsafeWindow.alert=function() {};


Poi visita:. http://jsbin.com/ajeqe4/6

Controllo del codice ( http://jsbin.com/ajeqe4/6/edit ), si vedrà 3 avvisi. Greasemonkey è in grado di fermare gli allarmi solo che il fuoco su load (di solito).

Altri fattori possono bloccare la capacità di GM per interrompere l'avviso ... La pagina carichi troppo veloce o chiusure, forse.


Incolla la fonte di quella pagina, inediti se possibile, a pastebin.com. Ci può essere qualche altra cosa che si può fare. Forse bloccare lo script tramite AdBlock?

In caso contrario, si dovrà scrivere un'estensione / add-on.

Altri suggerimenti

Se si utilizza Scriptish allora quanto segue funziona sempre:

// ==UserScript==
// @id              alert-killer-test@erikvold.com
// @name            Overwrite Alert
// @description     Overwrites alert()
// @include         *
// @run-at          document-start
// ==/UserScript==

unsafeWindow.alert=function() {};

Puoi get lo script utente qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top