この種のプロセスは次のとおりです。
- 変更するコンテンツの HTML 構造を決定します。
- 新しいコンテンツを追加または変更します。jQueryを使用すると非常に簡単になることに注意してください。
- 新しいコンテンツの JavaScript イベント リスナーを追加、変更、または削除します。
- ターゲット コンテンツが AJAX メソッドを介して追加されている場合は、AJAX 補正技術を使用します。
サンプルページの場合:
Firebugで調べると、Unanswered「ボタン」HTML が次のようになっていることがわかります。
<div class="nav mainnavs">
<ul>
...
<li>
<a href="/unanswered" id="nav-unanswered">Unanswered</a>
</li>
</ul>
</div>
したがって、次のような「ボタン」を追加します。
<div class="nav mainnavs">
<ul>
...
<li>
<a href="/unanswered" id="nav-unanswered">Unanswered</a>
</li>
<li>
<a href="#" id="gmOurFirstButton">Log something</a>
</li>
</ul>
</div>
jQueryの.click()
.
このページとこのボタンでは、AJAX について心配する必要はありません。
すべてをまとめると、完全に機能するスクリプトは次のようになります。
// ==UserScript==
// @name _Add a simple button to a page
// @include https://stackoverflow.com/questions/ask*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.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.
*/
var unansweredBtn = $("#nav-unanswered");
//-- Add our button.
unansweredBtn.parent ().after (
'<li><a href="#" id="gmOurFirstButton">Log something</a></li>'
);
//-- Activate the button.
$("#gmOurFirstButton").click ( function () {
console.log ("Something.");
} );