Обновление: для современных версий 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. Может быть, вы можете сделать что-то еще. Может заблокировать скрипт через адблок?
В противном случае вам придется писать расширение/надстройку.
person
Brock Adams
schedule
11.01.2011
<alert>...
размещен в теле страницы, которую вы хотите прервать с помощью Greasemonkey? - person Anders   schedule 11.01.2011