Запустите Greasemonkey script на той же странице несколько раз?
Я абсолютно не знаком с Greasemonkey, javascript, на самом деле все элементы интерфейса.
Требование: Usercript запускается GS один раз после загрузки страницы. Однако мне нужно, чтобы один и тот же script выполнялся несколько раз без обновления
Случай использования: например, поиск Amazon.com происходит с использованием Ajax. Мне нужно встроить пользовательский элемент в результаты поиска.
Мне нужно добавить свой контент в div search-results-div вместе с результатами каждый раз, когда поиск происходит на той же странице (обновление страницы не обновляется)
Мой текущий script работает только с обновлением страницы.
Надеюсь, что выше объяснения ясны. Пожалуйста, помогите.
Ответы
Ответ 1
Самый простой, самый надежный способ - использовать утилиту waitForKeyElements().
Вот полный script, который использует jQuery и waitForKeyElements
для изменения результатов поиска Amazon:
// ==UserScript==
// @name _Amazon Search, alter results
// @include http://www.amazon.com/s/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
function addCustomSearchResult (jNode) {
//***** YOUR CODE HERE *****
jNode.prepend (
'<div id="result_000" class="fstRow">Buy my stuff, instead!</div>'
);
}
waitForKeyElements ("#atfResults", addCustomSearchResult);
Ответ 2
Вы можете использовать событие DOMNodeInserted
для вызова вашего обратного вызова, например:
document.addEventListener('DOMNodeInserted', function() { alert('hi') }, false);
Обратите внимание, что событие будет вызвано любым изменением структуры страницы, поэтому вам нужно будет проверить, что вы настроили правильное изменение.