35

私は、Greasemonkey、javascript、実際にはすべての UI にまったく慣れていません。

要件: ユーザー スクリプトは、ページの読み込み後に GS によって 1 回実行されます。ただし、更新せずに同じスクリプトを複数回実行する必要があります

ユースケース: たとえば、Amazon.com の検索は Ajax を使用して行われます。検索結果にカスタム要素を埋め込む必要があります。

同じページで検索が行われるたびに、結果とともに自分のコンテンツを search-results-div に挿入する必要があります (ページの更新はありません)。

私の現在のスクリプトは、ページの更新でのみ実行されます。

上記の説明が明確であることを願っています。助けてください。

4

2 に答える 2

53

最も簡単で堅牢な方法は、waitForKeyElements() ユーティリティを使用することです。

以下は、jQuery を使用して Amazon 検索結果を変更する完全なスクリプトです。waitForKeyElements

// ==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);
于 2012-06-25T21:58:19.450 に答える
12

イベントを使用してDOMNodeInserted、コールバックを呼び出すことができます。例:

document.addEventListener('DOMNodeInserted', function() { alert('hi') }, false);

イベントはページ構造の変更によってトリガーされるため、正しい変更をターゲットにしていることを確認する必要があることに注意してください。

于 2012-06-25T19:53:46.257 に答える