我在使用Greasemonkey和Firefox javascript注入一个按钮时遇到了真正的困难,当按下该按钮时,它将执行一个功能。
例如,我正试图在the SO "Ask a Question" page上的“未答复”按钮后面放置按钮。
我希望它能运行一个能任何的函数,例如alert ("Hello World")
或console.log('TEST start')
。
有人可以发布一些示例代码来完成这项工作吗?一旦我有了工作样本,那么我应该可以从那里开始。
非常感谢提前。
答案 0 :(得分:2)
这种事情的过程是:
使用 Firebug进行检查显示未答复“按钮”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's .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.");
} );