Во-первых, вы, вероятно, не хотите запускать скрипт в iFrames.
Вы можете заблокировать это, используя директиву @noframes
, которая теперь работает в Greasemonkey и Tampermonkey с октября 2014 года.
Для более старых версий или для механизмов сценариев, которые не поддерживают @noframes
, вы можете использовать этот код сразу после блока метаданных:
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
Во-вторых, вы можете подождать и запустить свой GM-код, один раз, при загрузке страницы. Оберните все в main()
и вызовите его для события load
, например:
window.addEventListener ("load", LocalMain, false);
function LocalMain () {
// Your code goes here.
}
В-третьих, вы можете исключить сайты или страницы, добавив директивы // @exclude
в блок метаданных.
В целом, лучше избегать универсально включенных сценариев GM, если это возможно.
Другие методы могут устанавливать флаги или перезагружать страницу с параметрами URL. Они становятся хитрыми, поэтому сохраните их как последнее средство.