2011-11-23 61 views
0

我正在写一个Firefox扩展,并有以下问题:插入按钮,内容脚本

我内容脚本(insertInDom.js)一个按钮

$('#leftCol').append("<input type='button' value='Check Privacy' onclick=\"buttonClick()\" >"); 

里面添加用户之后,点击按钮从内容脚本应该启动一个功能,但我总是得到错误Fehler:buttonClick没有定义

我怎么能对插入的按钮在我的脚本中的事件作出反应?谢谢:)

整个相关代码:

main.js

var pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: ["http://www.facebook.com/"], 
    contentScriptWhen: 'ready', 
    contentScriptFile: [data.url('jquery-1.6.4.js'), 
         data.url('insertInDom.js')], 
    onAttach: function(worker) { 
     worker.port.on('buttonClicked', function(content) { 
      console.log(content); 
     }); 
    } 
}); 

insertInDom.js:

function buttonClick(){ 
    self.port.emit("buttonClicked", "true"); 
} 

$('#leftCol').append("<input type='button' value='Check Privacy' onclick=\"buttonClick()\" >"); 

回答

1

在jQuery 1.7的,我认为适当的方式来增加点击事件(甚至是在加载初始页面后创建的DOM元素就像这样:

$("#dataTable tbody tr").on("click", function(event){ 
alert($(this).text()); 
}); 

文档:http://api.jquery.com/on/

所以,你可以尝试添加一个ID您输入,然后是这样的:

$("#myInput").on("click", function(event){ 
     self.port.emit("buttonClicked", "true"); 
    }); 
+0

谢谢,工作完美:) – Weedjo

1

既然你已经使用jQuery,为什么不利用的jQuery处理你的点击事件?另外,我试图习惯使用jQuery来构建DOM元素 - 它会确保您不会偶然发现一些浏览器问题。

$('<input />', { type: 'button', value: 'Check Privacy' }) 
    .on('click', buttonClick) 
    .appendTo('#leftCol'); 
+0

谢谢你的帮助! :) – Weedjo