我正在使用addon-sdk-1.14为firefox 24.0开发插件,并且在复制Node对象的parentNode时我注意到了一些奇怪的行为。
全内容脚本文件:
var imgs = document.getElementsByTagName("img");
if (imgs.length > 0) {
var node = imgs.item(0);
var parent = node.parentNode.cloneNode();
if (parent && node.parentNode) {
console.log(node.parentNode.nodeType);
console.log(parent.nodeType);
}
}
输出:
1
null
我不熟悉javascript,我想了解发生了什么?我们不允许制作Node对象的副本,还是什么?
答案 0 :(得分:2)
将parent
变量的名称更改为不那么突兀的名称,或者将代码置于自执行匿名函数中(我建议使用前者)。
答案 1 :(得分:0)
尝试node.parentNode.nodeName
,您可能会引用textNode
或其他无法偶然使用的内容。
您还可以通过以下方式循环浏览可用的方法和属性...
for (i in node.parentNode) {alert('i = '+i);}
评论,我会跟着你,直到你到达你需要的地方。
请注意,如果您拥有id
个属性,则可能会重复...
警告:cloneNode()可能会导致文档中的重复元素ID
https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode#Notes
...当您使用JavaScript引用id
时,它将导致不可预测的行为。