如何在firefox扩展中从注入的HTML按钮触发事件
How to trigger an event from injected HTML button in firefox extension?
我的最终目标是创建一个firefox扩展,在网站上插入一个HTML按钮,并在我的扩展中自定义代码模块中定义一个函数。
我试着实现Nickolay对这个问题的回答。当我点击我创建的按钮时,我在Firebug中得到以下错误:
"uncaught exception: [exception…]"组件返回的失败代码:0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget. log]。dispatchEvent]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame: "
我代码:onPageLoad: function(aEvent) {
Components.utils.import("chrome://my_ext/content/writeFile.jsm", my_ext);
//alert(foo()); - foo() is an function in the above code module I import
var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
var event = doc.createEvent("Events");
event.initEvent("my-custom-event", true, true);
var fblike = doc.getElementById("LikePluginPagelet");
var button = doc.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", "My Button");
button.setAttribute('onclick', 'dispatchEvent(event)');
fblike.appendChild(button, fblike);
var docx = event.originalTarget;
if(docx && docx.addEventListener)
docx.addEventListener("my-custom-event", function() {alert(foo()); }, false);
},
我writeFile.jsm :
var EXPORTED_SYMBOLS = ["foo"];
function foo() {
return "foo test";
}
我该如何解决这个问题?我还应该提到,我对开发浏览器扩展是完全陌生的。
button.setAttribute('onclick', 'dispatchEvent(event)')
不会做你认为它会做的事情-当按钮被点击时,它会获取click
事件并试图调度它。但是,不允许第二次调度事件。你想要的是:
button.addEventListener("click", function() {
button.dispatchEvent(event);
}, false);
这将创建一个函数闭包,它可以访问周围代码的变量-包括button
和event
。关于闭包的进一步阅读:http://www.javascriptkit.com/javatutors/closures.shtml
终于成功了。我不需要添加第二个监听器,它只需要一行:按钮。addEventListener("click", foo, false);
我以前尝试过foo()而不是只是foo,失败了,但现在工作得很好。
相关文章:
- 我的HTML按钮没有在Javascript中运行
- 将插件制作的Javascript包含到html按钮中
- 变量不递增如何I'我喜欢html按钮点击的时候
- 如何通过单击html按钮获得h1的文本值
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- Html按钮点击事件未触发单选按钮
- 使用带HTML按钮的Knockout
- HTML按钮刷新页面而不是将数据发送到数据库
- 动态生成的html按钮无法加载页面
- 为什么不'这个HTML按钮不起作用
- HTML按钮在单击时表现得很奇怪
- HTML按钮获胜't更改JS变量
- 如何在HTML按钮中有一个静态onclick参数
- 自动点击html按钮
- 按时间启用HTML按钮
- 更改HTML按钮值的颜色,其中值来自调用Javascript的onclick
- 如何最好地编写重叠的 html 按钮
- HTML按钮的作用类似于从键盘按下的键,并在某些对象或整个网站上起作用
- HTML 按钮在 Javascript 的文本字段中添加数字