Tampermonkey: не разрешать оповещения [дублировать]

Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:

SqlConnection connection = null;
connection.Open();

Это вызовет ошибку, потому что, пока я объявил переменную «connection», она не указала ни на что. Когда я пытаюсь вызвать член «Open», для его устранения нет ссылки, и он будет вызывать ошибку.

Чтобы избежать этой ошибки:

  1. Всегда инициализируйте свои объекты, прежде чем пытаться что-либо с ними делать.
  2. Если вы не уверены, что объект имеет значение null, проверьте его с помощью object == null.

Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.

4
задан IAdapter 11 January 2011 в 23:12
поделиться

2 ответа

Обновление: для современных версий Greasemonkey: вы можете перехватить alert() в большинстве случаев, используя @run-at document-start. Например, загрузите этот скрипт, а затем посетите тестовую страницу :

// ==UserScript==
// @name            Overwrite Alert
// @description     Overwrites alert()
// @include         http://output.jsbin.com/*
// @grant           none
// @run-at          document-start
// ==/UserScript==

unsafeWindow.alert=function (str) {
    console.log ("Greasemonkey intercepted alert: ", str);
};

Если ваш скрипт требует функций GM_, он должен установить @grant, отличное от none. В этом случае используйте exportFunction() так:

// ==UserScript==
// @name            Overwrite Alert
// @description     Overwrites alert()
// @include         http://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.

Это связано с тем, что это предупреждение будет срабатывать во время страницы load и перед событием 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 предупреждения.

Другие факторы могут заблокировать способность GM остановить предупреждение ... Страница загружается слишком быстро или закрывается, возможно.

g12]


Вставьте источник этой страницы, неотредактированный, если это вообще возможно, на pastebin.com. Возможно, что-то еще вы можете сделать. Может быть, заблокировать скрипт через adblock?

В противном случае вам придется написать расширение / дополнение.

4
ответ дан Brock Adams 26 August 2018 в 07:35
поделиться

Если вы используете Scriptish , то всегда будет работать следующее:

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

unsafeWindow.alert=function() {};

Вы можете получить здесь скрипт пользователя .

2
ответ дан erikvold 26 August 2018 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: