Как я могу заставить greasemonkey вызывать функцию на странице после ее загрузки?

StackOverflow https://stackoverflow.com/questions/443430

  •  22-07-2019
  •  | 
  •  

Вопрос

У меня есть очень простой скрипт greasemonkey, который я хочу вызвать на странице уже существующей функции javascript. Я прочитал документацию и, похоже, ничего не работает

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
Это было полезно?

Решение

Попробуйте использовать: unsafeWindow.myFunction ();

Дополнительная информация и информация - http://wiki.greasespot.net/UnsafeWindow

Другие советы

Один из способов вызова функции на исходной странице выглядит следующим образом:

location.href = "javascript:void(myFunction());";

Это немного некрасиво. Существует также unsafeWindow , предоставляемая GreaseMonkey, но авторы не советуют ее использовать.

unsafeWindow.myFunction();

Выглядит аккуратнее, но убедитесь, что вы понимаете последствия. Из руководства:

  

unsafeWindow обходит Greasemonkey's   Модель безопасности на основе XPCNativeWrapper,   который существует, чтобы убедиться, что   вредоносные веб-страницы не могут изменить   объекты таким образом, чтобы сделать   скрипты greasemonkey (которые выполняют   с большими привилегиями, чем обычные   Javascript работает на веб-странице) сделать   вещи, которые сделали их авторы или пользователи   не намерены. Пользовательские скрипты должны   поэтому избегайте звонить или в любом   другой способ в зависимости от любых свойств   на unsafeWindow - особенно если они   выполняются для произвольных веб-страниц,   например, с @include *, где   Авторы страницы, возможно, подорвали   среда таким образом.

Другими словами, ваш скрипт повышает привилегии, доступные исходному скрипту страницы, если вы используете unsafeWindow.

Вы можете попробовать использовать прослушиватели событий JavaScript.

Они исполняют код в ответ на происходящие события объекта (такие как загрузка страницы)

Например, чтобы выполнить код при загрузке страницы:

window.addEventListener('load', function () 
{
    /* code goes here */
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top