Question

Sur place il y a du code comme ça (son site sur le réseau local)

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

J'essaie de désactiver cette alerte à l'aide de GM. Je suis en train de le faire

unsafeWindow.alert=function() {};

mais je vois l'alerte et obtenir cette erreur

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]

Comment désactiver cette alerte?

P.S. c'est pas un javascript question, mais Greasemonkey question.

EDIT:

Le site de sa société, donc je ne peux pas coller le code réel

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

Il y a aussi quelques scripts et déclarations CSS en-tête.

Était-ce utile?

La solution

Mise à jour: Pour les versions modernes de Tampermonkey, Violentmonkey, Greasemonkey (mais fortement recommandé d'éviter GM 4 +) :
Vous pouvez intercepter alert() dans la plupart des cas à l'aide @run-at document-start. Par exemple, charger ce script, puis visitez la page de test :

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

Notez que si vous êtes en cours d'exécution Tampermonkey , vous pouvez alertes bloc plus efficacement par le passage à Inject Mode: Instant :
Tampermonkey Paramètres => Mode Config: Advanced => Experimental => Injecter Mode:. Instant


Si votre script nécessite des fonctions GM_ , il doit définir @grant autre que rien. Dans ce cas, utilisez exportFunction() comme ceci:

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


Vieille réponse, pour Greasemonkey avant Août 2011:

unsafeWindow.alert=function() {}; fonctionne très bien dans des situations choisies.

Mais, si tel est vraiment le code sur la page, vous ne serez pas en mesure d'arrêter cette alerte en utilisant Greasemonkey.

En effet, cette alerte se déclenche pendant la charge de la page et avant l'événement DOMContentLoaded -. Qui est quand Greasemonkey est tiré


Chargez ce script GM:

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

unsafeWindow.alert=function() {};


Alors visitez:. http://jsbin.com/ajeqe4/6

Contrôle du code ( http://jsbin.com/ajeqe4/6/edit ), Vous verrez 3 alertes. Greasemonkey est seulement en mesure d'arrêter les alertes sur le feu load (en général).

D'autres facteurs peuvent bloquer la capacité de GM d'arrêter l'alerte ... La page se charge trop rapide ou fermetures, peut-être.


Coller la source de cette page, non éditée si possible, à pastebin.com. Il peut y avoir quelque chose d'autre que vous pouvez faire. Peut-être bloquer le script via Adblock?

Dans le cas contraire, vous devrez écrire une extension / add-on.

Autres conseils

Si vous utilisez Scriptish les commandes suivantes vont toujours du travail:

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

unsafeWindow.alert=function() {};

Vous pouvez obtenir le script utilisateur .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top