0
我有一個按鈕在popup.html,像這樣。的addEventListener適用於靜態的按鈕,而不是動態生成的按鈕
<button id='test'>TEST BUTTON</button>
然後我有這個函數和偵聽器在一個單獨的js文件。
function getAjax()
{
chrome.tabs.executeScript(null, {code:"alert('works!')"});
}
document.addEventListener('DOMContentLoaded', function() {
var buttons = document.querySelectorAll('button');
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', getAjax);
}
});`
當我使用上面的按鈕調用該函數。現在,如果我動態生成按鈕,如下所示:
var AJAXholder = document.getElementById("AJAXholder");
var button = document.createElement("button");
button.setAttribute("class", "app-buttons");
button.setAttribute("id", ""+ objects[i].name +"");
button.setAttribute("name", ""+ objects[i].name +"");
var buttonText = document.createTextNode(""+ objects[i].name +"");
button.appendChild(buttonText);
AJAXholder.appendChild(button);
這些按鈕已正確創建,但無法觸發相同的功能。有什麼我可以做的嗎?
編輯:
我添加了一個新的事件監聽器,因爲我做一個新的按鈕,像這樣:
var newlistener = document.getElementById(""+ objects[i].name +"").addEventListener('click', getAjax);
看來工作。無論如何,不介意學習更好的方法,否則我會投票刪除,當我被允許。