我有一个chrome扩展程序,可以将iframe注入已加载的页面。以编程方式生成iframe的内容。它包括一个添加了click事件监听器的按钮。但它似乎并不总是如火如荼。它大部分时间都有效,但有一种情况是它不起作用的是扩展是新加载的(如安装时)。以下是我的代码的要点,你看到任何问题吗?
content.js:
var frame = document.createElement("iframe");
frame.onload = function() {
var doc = frame.contentDocument || frame.contentWindow.document;
var closeButton = doc.createElement("input");
closeButton.type = "button";
closeButton.value = "X";
closeButton.addEventListener("click", function() {
document.body.removeChild(frame);
});
doc.body.appendChild(closeButton);
};
document.body.appendChild(frame);
的manifest.json
{
"name": "eventlistener-bug",
"version": "0.1",
"content_scripts": [{
"run_at": "document_idle",
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"]
}],
"permissions": ["http://*/*", "https://*/*"],
"manifest_version": 2
}
答案 0 :(得分:0)
到目前为止,看起来这是Chrome中的一个错误。它已被报告并被接受:https://bugs.chromium.org/p/chromium/issues/detail?id=745771
计划在第61版修复。
可能的解决方法是重新添加事件侦听器,例如在iframe的mouseover事件处理程序中。