javascript - “文档”与 'content.document'

标签 javascript dom firefox-addon

我正在尝试编写一个 Firefox 扩展,将元素添加到加载的页面。到目前为止,我通过

获取了文档的根元素
var domBody = content.document.getElementsByTagName("BODY").item(0);

并通过

创建新元素
var newDiv = content.document.createElement("div");

事实上,一切都运行良好。但是当我添加一个带有 onclick 属性的按钮时,问题就来了。当按钮正确显示时,出现错误。我已经问过here ,并且 document.createElement() 的答案(无内容)有效。

但是如果我删除“内容”。到处,真正的麻烦开始了。首先,domBody 为空/未定义,无论我如何尝试访问它,例如document.body(实际上我在文档完全加载后添加了所有元素。至少我是这么认为的)。其次,所有其他元素看起来都不一样。似乎不再考虑样式信息,例如 element.style.width="300px"。

简而言之,对于“content.document”,一切看起来都不错,但是button.onclick 会引发错误。只有“文档”按钮有效,但元素不再正确显示。有没有人看到解决方案。

最佳答案

如果您使用 addEventListener [MDN] 应该可以正常工作(至少这是我用过的)。我在某处读到(我会搜索它),在 chrome 代码中创建元素时,您不能通过属性附加事件监听器。

尽管如此,您仍然应该使用 content.document.createElement:

 Page = function(...) {
   ...
 };

 Page.prototype = {
   ...
   addButton : function() {
     var b = content.document.createElement('button');
     b.addEventListener('click', function() { 
         alert('OnClick'); 
     }, false);
   },
   ...
 };

顺便说一下,我会在某处存储对 content.document 的引用。

关于javascript - “文档”与 'content.document',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067941/

相关文章:

javascript - 使用 Node 和 Socket.io 我试图传递一个简单的数组,但我什么也没得到。我错过了什么?

PHP XPATH 评估

firefox - 如何在 options.xul 中使用 oncommand 来调用 bootstrap.js 中的函数?

javascript - 获取有关 iframe 加载的通知

firefox-addon - 通过代码支持 SSL/TLS1.0

javascript - 打印前先打开 HTML

javascript - 将 tabindex ="-1"添加到当前菜单项是一个很好的辅助功能实践吗?

javascript - 如何在 Vue.js 中用组件动态包装子字符串?

javascript - 我如何访问 Electron 中的 DOM 元素?

php - PHP DOMXPath查询使用元素的innerHTML/nodeValue查找并返回该元素