Обновление: Для современных версий Tampermonkey, Violentmonkey, Greasemonkey (но настоятельно рекомендуется избегать GM 4 +) :
Вы можете перехватить alert()
в большинстве случаев, используя @run-at document-start
. Например, загрузите этот скрипт и перейдите на тестовую страницу :
// ==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);
};
Обратите внимание, что если вы используете Tampermonkey , вы можете блокировать предупреждения более эффективно, переключившись на Inject Mode: Instant
:
Настройки Tampermonkey => Режим настройки: Advanced
=> Экспериментальный => Режим ввода: Instant
.
Если вашему сценарию требуются функции GM_ , он должен установить @grant
, отличный от none. В этом случае используйте exportFunction()
примерно так:
// ==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);
Старый ответ для Greasemonkey до августа 2011 года:
unsafeWindow.alert=function() {};
отлично работает в некоторых ситуациях.
Но, если это действительно код на странице, вы не сможете остановить это предупреждение с помощью Greasemonkey.
Это связано с тем, что это оповещение сработает во время загрузки страницы и до события DOMContentLoaded
- когда срабатывает Greasemonkey.
Загрузите этот скрипт GM:
// ==UserScript==
// @name Overwrite Alert
// @description Overwrites alert()
// @include http://jsbin.com/*
// ==/UserScript==
unsafeWindow.alert=function() {};
Тогда посетите: http://jsbin.com/ajeqe4/6.
Проверка кода (http://jsbin.com/ajeqe4/6/edit),. Вы увидите 3 оповещения. Greasemonkey может только остановить оповещения, которые запускаются на load
(обычно).
Другие факторы могут блокировать способность GM остановить предупреждение ... Возможно, страница загружается слишком быстро или закрывается.
Вставьте источник этой страницы, если это вообще возможно, неотредактированным, на pastebin.com. Там может быть что-то еще, что вы можете сделать. Может заблокировать скрипт через adblock?
В противном случае вам придется написать расширение / надстройку.