Javascript 复制节点对象的parentNode

Javascript 复制节点对象的parentNode,javascript,firefox-addon,Javascript,Firefox Addon,我正在用addon-sdk-1.14为Firefox24.0开发插件,我注意到在复制节点对象的parentNode时出现了一些奇怪的行为 完整内容脚本文件: var imgs = document.getElementsByTagName("img"); if (imgs.length > 0) { var node

我正在用addon-sdk-1.14为Firefox24.0开发插件,我注意到在复制节点对象的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,我想了解发生了什么?我们是否不允许复制节点对象,或者做什么?

尝试
节点.parentNode.nodeName
,您可能引用了
文本节点
或其他无法意外使用的对象

您还可以通过以下方式循环使用可用的方法和属性

for (i in node.parentNode) {alert('i = '+i);}
评论,我会跟着你,直到你到达你需要的地方

请记住,如果您有
id
属性,它们可能会重复

警告:cloneNode()可能导致文档中的元素ID重复


…当您使用JavaScript引用
id
时,它将导致不可预测的行为。

父变量的名称更改为不太显眼的名称,或者将代码放在自动执行的匿名函数中(我建议使用前者)。

console.dir(node.parentNode)
应显示所有属性。如果您只需要方法/非方法,请使用
filter()
typeof prop==“function”
。您知道,复制parentNode和不复制parentNode时,我不明白为什么结果不同。至于对象的属性,它们已经丢失了。前几个是:window、top、parent、unsafeWindow、console、imgs、i、node、newNode。您正在克隆的元素是否有
id
属性?我是通过document.getElementsByTagName(“img”)找到我的对象的,所以id应该没有问题。为什么我要注意cloneNode()的功能,它是在复制元素时调用的吗?否,我正在复制带有src和class属性的img。请提供完整的示例(和/或链接),以便我们可以复制您看到的内容。@n我还没有发布它,因此无法提供链接。你需要一个内容脚本还是整个目录层次结构来复制它?我发布了整个内容脚本文件。你还需要别的什么吗?哈,我更改了
父变量的名称,它成功了。这是为什么?因为这些东西是在内容脚本中运行的,而且已经有了内置的脚本实际上,
Worker
window.parent
隐藏在getter后面。如果没有setter,
父级
实际上是只读的。