Google chrome extension addEventListener适用于静态按钮,但不适用于动态生成的按钮

Google chrome extension addEventListener适用于静态按钮,但不适用于动态生成的按钮,google-chrome-extension,Google Chrome Extension,我在popup.html中有一个按钮,就像这样 <button id='test'>TEST BUTTON</button> 这些按钮创建正确,但无法启动相同的功能。我能做些什么使它工作吗 编辑: 我在创建新按钮时添加了一个新的事件侦听器,如下所示: var AJAXholder = document.getElementById("AJAXholder"); var button = document.createElement("button"); button.

我在popup.html中有一个按钮,就像这样

<button id='test'>TEST BUTTON</button>
这些按钮创建正确,但无法启动相同的功能。我能做些什么使它工作吗

编辑:

我在创建新按钮时添加了一个新的事件侦听器,如下所示:

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);

它似乎起作用了。无论如何,我不介意学习更好的方法,否则我会在允许的情况下投票删除。

您的按钮生成的代码是否包含在
DOMContentLoaded
侦听器函数中?如果没有,我猜是
DOMContentLoaded
在JS脚本运行以创建按钮之前启动,因此
querySelectorAll('button')
会得到一个空列表,因为还没有按钮。确保按钮创建脚本按时间顺序在
DOMContentLoaded
侦听器函数之后运行(最好是在该函数中运行)

var newlistener = document.getElementById(""+ objects[i].name +"").addEventListener('click', getAjax);