On site there is code like that (its site on LAN)
<script language="JavaScript" type="text/javascript">
alert("ble");
</script>
I try to disable that alert using GM. I was trying to do this
unsafeWindow.alert=function() {};
but I see the alert and get this error
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/ponents/greasemonkey.js :: anonymous :: line 377" data: no]
How to disable that alert?
P.S. this is NOT a javascript question, but a Greasemonkey question.
EDIT:
Its pany's website, so I can't paste the real code
<head>
<script>
dojo.require("dojo.back");
dojo.back.init();
</script>
</head>
<body onload="someMethod()">
<iframe></iframe>
<script>
alert("bla");
</script>
</body>
There are also some scripts and CSS declarations in header.
On site there is code like that (its site on LAN)
<script language="JavaScript" type="text/javascript">
alert("ble");
</script>
I try to disable that alert using GM. I was trying to do this
unsafeWindow.alert=function() {};
but I see the alert and get this error
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/ponents/greasemonkey.js :: anonymous :: line 377" data: no]
How to disable that alert?
P.S. this is NOT a javascript question, but a Greasemonkey question.
EDIT:
Its pany's website, so I can't paste the real code
<head>
<script>
dojo.require("dojo.back");
dojo.back.init();
</script>
</head>
<body onload="someMethod()">
<iframe></iframe>
<script>
alert("bla");
</script>
</body>
There are also some scripts and CSS declarations in header.
Share Improve this question edited Mar 6, 2019 at 23:20 Brock Adams 93.5k23 gold badges240 silver badges304 bronze badges asked Jan 11, 2011 at 10:39 IAdapterIAdapter 64.8k73 gold badges186 silver badges243 bronze badges 1-
@01, That code
<alert>...
is placed in the body on a page, which you would like to abort using Greasemonkey? – Anders Commented Jan 11, 2011 at 13:05
2 Answers
Reset to default 10Update: For modern versions of Tampermonkey, Violentmonkey, Greasemonkey (but strongly remended to avoid GM 4+):
You can intercept alert()
in most cases by using @run-at document-start
. For example, load this script and then visit the test page:
// ==UserScript==
// @name _Overwrite Alert
// @match *://output.jsbin./*
// @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);
};
Note that if you are running Tampermonkey, you can block alerts more effectively by switching to Inject Mode: Instant
:
Tampermonkey Settings => Config mode: Advanced
=> Experimental => Inject Mode: Instant
.
If your script requires GM_ functions, it must set @grant
other than none. In that case use exportFunction()
like so:
// ==UserScript==
// @name _Overwrite Alert
// @match *://output.jsbin./*
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
function myAlert (str) {
console.log ("Greasemonkey intercepted alert: ", str);
}
unsafeWindow.alert = exportFunction (myAlert, unsafeWindow);
Old answer, for Greasemonkey before August 2011:
unsafeWindow.alert=function() {};
works fine in select situations.
But, if that really is the code on the page, then you will not be able to stop that alert using Greasemonkey.
This is because that alert will fire during the page load and before the DOMContentLoaded
event -- which is when Greasemonkey is fired.
Load this GM script:
// ==UserScript==
// @name Overwrite Alert
// @description Overwrites alert()
// @include http://jsbin./*
// ==/UserScript==
unsafeWindow.alert=function() {};
Then visit: http://jsbin./ajeqe4/6 .
Inspecting the code (http://jsbin./ajeqe4/6/edit), You will see 3 alerts. Greasemonkey is only able to stop the alerts that fire on load
(usually).
Other factors can block GM's ability to stop the alert... The page loads too fast or closures, perhaps.
Paste the source of that page, unedited if at all possible, at pastebin.. There may be something else you can do. Maybe block the script via adblock?
Otherwise, you'll have to write an extension/add-on.
If you use Scriptish then the following will always work:
// ==UserScript==
// @id [email protected]
// @name Overwrite Alert
// @description Overwrites alert()
// @include *
// @run-at document-start
// ==/UserScript==
unsafeWindow.alert=function() {};
You can get the user script here.