私はGreasemonkey、javascript、実際にはすべてのUIにまったく慣れていません。
要件:Userscriptは、ページの読み込み後にGSによって1回実行されます。ただし、更新せずに同じスクリプトを複数回実行する必要があります
ユースケース:たとえば、Amazon.comの検索はAjaxを使用して行われます。検索結果にカスタム要素を埋め込む必要があります。
同じページで検索が行われるたびに、結果とともにコンテンツをsearch-results-divに挿入する必要があります(ページの更新はありません)
現在のスクリプトは、ページを更新した場合にのみ実行されます。
上記の説明が明確であることを願っています。助けてください。
最も簡単で堅牢な方法は、 waitForKeyElements()ユーティリティ を使用することです。
これは、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);
DOMNodeInserted
イベントを使用して、コールバックを呼び出すことができます。例:
document.addEventListener('DOMNodeInserted', function() { alert('hi') }, false);
イベントはページ構造の変更によってトリガーされるため、正しい変更をターゲットにしていることを確認する必要があることに注意してください。