Wie die Alarm-Funktion mit einem userscript außer Kraft zu setzen?
-
09-10-2019 - |
Frage
Vor Ort gibt es Code, wie die (seine Website auf LAN)
<script language="JavaScript" type="text/javascript">
alert("ble");
</script>
Ich versuche, dass die Benachrichtigung für GM zu deaktivieren. Ich habe versucht, dieses
zu tununsafeWindow.alert=function() {};
, aber ich sehe den Alarm und erhalten diesen Fehler
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]
Wie dieser Alarm deaktivieren?
P. S. dies ist NICHT ein Javascript Frage, sondern ein Grease Frage.
EDIT:
Die Unternehmens-Website, so dass ich nicht den echten Code einfügen
<head>
<script>
dojo.require("dojo.back");
dojo.back.init();
</script>
</head>
<body onload="someMethod()">
<iframe></iframe>
<script>
alert("bla");
</script>
</body>
Es gibt auch einige Skripte und CSS-Deklarationen in Header.
Lösung
Update: Für moderne Versionen von Tampermonkey, Violentmonkey, Greasemonkey (aber dringend empfohlen, GM zu vermeiden 4 +) :
Sie können mit alert()
@run-at document-start
in den meisten Fällen abfangen. Zum Beispiel dieses Skript laden und dann unter der Testseite :
// ==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);
};
Beachten Sie, dass, wenn Sie laufen Tampermonkey können Sie Block Warnungen effektiver durch die Umstellung auf Inject Mode: Instant
:
Tampermonkey Einstellungen => Config-Modus: Advanced
=> Experimental => Inject-Modus:. Instant
Wenn Ihr Skript GM_ Funktionen erfordert , muss es @grant
außer none gesetzt. In diesem Fall Gebrauch exportFunction()
etwa so:
// ==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);
Alte Antwort, für Greasemonkey vor August 2011:
unsafeWindow.alert=function() {};
funktioniert gut in ausgewählten Situationen.
Aber, wenn das wirklich der Code auf der Seite ist, dann werden Sie nicht in der Lage sein, dieses Signal zu stoppen Greasemonkey verwenden.
Dies liegt daran, dass Alarm während der Seite zu laden und vor dem DOMContentLoaded
Ereignisse ausgelöst wird -. Das ist, wenn Grease abgefeuert wird
Laden Sie diesen GM-Skript:
// ==UserScript==
// @name Overwrite Alert
// @description Overwrites alert()
// @include http://jsbin.com/*
// ==/UserScript==
unsafeWindow.alert=function() {};
Dann besuchen. http://jsbin.com/ajeqe4/6
Überprüfen des Codes ( http://jsbin.com/ajeqe4/6/edit ), werden Sie 3 Warnungen sehen. Greasemonkey ist nur in der Lage die Warnungen, dass das Feuer auf load
zu stoppen (in der Regel).
Andere Faktoren können GM Fähigkeit blockieren die Warnung ... Die Seite lädt zu schnell oder Schließungen zu stoppen, vielleicht.
Fügen Sie die Quelle dieser Seite, Unedited wenn überhaupt möglich, bei pastebin.com. Es kann etwas, was Sie tun können. blockiert das Skript über adblock vielleicht?
Ansonsten müssen Sie eine Erweiterung schreiben müssen / Add-on.
Andere Tipps
Wenn Sie Scriptish dann folgenden wird immer funktionieren:
// ==UserScript==
// @id alert-killer-test@erikvold.com
// @name Overwrite Alert
// @description Overwrites alert()
// @include *
// @run-at document-start
// ==/UserScript==
unsafeWindow.alert=function() {};
Sie können get der Benutzer Skript hier .