如何注入将执行函数的按钮
How to inject a button that will execute a function?
我在使用Greasemonkey和Firefox javascript注入一个按钮时遇到了真正的困难,当选择该按钮时,该按钮将执行一个函数。
例如,我试图将按钮放在SO"Ask a Question"页面上"Unanswered"按钮的正后方。
我希望它运行一个函数来执行任何,例如alert ("Hello World")
或console.log('TEST start')
。
有人能张贴一些样本代码使这项工作吗?一旦我有了一个工作样本,我就可以从那里开始了。
非常感谢。
这类事情的过程是:
- 确定要修改的内容的HTML结构
- 添加或更改您的新内容。请注意,jQuery让它变得容易多了
- 为新内容添加、修改和/或删除javascript事件侦听器
- 如果目标内容是通过AJAX方法添加的,请使用AJAX补偿技术
对于您的示例页面:
使用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的.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.");
} );
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环