popup.html にボタンがあります。
<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);
うまくいくようです。いずれにせよ、より良い方法を学ぶことを気にしないか、許可されたら削除することに投票します。