2011-11-23 59 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