Подтвердить что ты не робот

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

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

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
4b9b3361

Ответ 2

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

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

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

unsafeWindow.myFunction();

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

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

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

Ответ 3

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

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

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

window.addEventListener('load', function () 
{
    /* code goes here */
}

Ответ 4

Тестовый ответ. Я тестирую пользовательский скрипт stackoverflow.