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

Запустите Greasemonkey script на той же странице несколько раз?

Я абсолютно не знаком с Greasemonkey, javascript, на самом деле все элементы интерфейса.

Требование: Usercript запускается GS один раз после загрузки страницы. Однако мне нужно, чтобы один и тот же script выполнялся несколько раз без обновления

Случай использования: например, поиск Amazon.com происходит с использованием Ajax. Мне нужно встроить пользовательский элемент в результаты поиска.

Мне нужно добавить свой контент в div search-results-div вместе с результатами каждый раз, когда поиск происходит на той же странице (обновление страницы не обновляется)

Мой текущий script работает только с обновлением страницы.

Надеюсь, что выше объяснения ясны. Пожалуйста, помогите.

4b9b3361

Ответ 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);

Обратите внимание, что событие будет вызвано любым изменением структуры страницы, поэтому вам нужно будет проверить, что вы настроили правильное изменение.