for(.. in ..) と hasOwnProperty に基づいた再帰関数を使用してオブジェクトを複製しています。これは IE と FF では正常に機能しますが、Chrome では機能しません。
for(... in ...) を使用してオブジェクトのメンバーを反復処理すると、オブジェクトが DOM オブジェクトの場合、Firefox と Chrome で hasOwnProperty の結果が異なります。
Chrome コンソールと Firebug(FF) のコンソールに次のように入力すると、異なる結果が得られます。
var t = document.createElement("table");
var tr = t.insertRow(-1);
for(var p in tr) if(tr.hasOwnProperty(p)) console.log(p);
Firefox の出力:
コンストラクター
addEventListener
クロム出力:
clientLeft
scrollHeight
firstElementChild
offsetParent
ch
offsetWidth
isContentEditable
hidden
previousElementSibling
parentElement
localName
children
ownerDocument
nodeValue
lastElementChild
rowIndex
offsetLeft
tagName
className
prefix
innerHTML
previousSibling
namespaceURI
id
childElementCount
innerText
scrollLeft
clientHeight
align
textContent
nextSibling
scrollWidth
offsetHeight
chOff
clientWidth
nodeName
style
lang
scrollTop
offsetTop
childNodes
baseURI
nextElementSibling
vAlign
sectionRowIndex
classList
title
firstChild
attributes
dataset
outerText
cells
parentNode
clientTop
tabIndex
contentEditable
outerHTML
dir
lastChild
bgColor
nodeType
スペルチェック
ドラッグ可能
hasOwnProeperty に対して true としてフラグが立てられたすべての余分なプロパティは、私のコードで「無限/十分にクラッシュする」再帰を引き起こしています。プロパティがDOMオブジェクトプロパティに組み込まれているかどうかを判断する方法はありますか? または他の解決策..