IE8の開発者ツールはスクリプトの実行結果に悪影響を及ぼすことがある
IE8 で以下のページを表示し開発者ツールで[デバッグ]を開始すると debugger; の位置で自動的に停止します。
# debugger はハードブレイクポイントです。大抵のブラウザで利用可能です。
<!DOCTYPE html><html><head><title></title> <style> div { border: 1px solid gray; width: 200px; height: 200px } </style> <script> window.onload = function() { var node = document.createElement("div"); debugger; document.body.appendChild(node); }; </script></head><body> </body></html>
ここで、[コンソール]タブを開き、node.parentNode と入力すると null が表示されます。
次に、[ローカル]タブを開き、[+] node のプラスマークをクリックし展開します。
またコンソールタブに戻り、 node.parentNode.nodeType と入力すると 11(documentFragment)が返ります。
IEでは親ノードが存在しないノードの node.currentStyle は null になるはずですが、node.parentNode が設定されている状態だと node.currentStyle も設定されてしまい、スタイルを取得/計算するスクリプトの動作に悪影響を与えてしまいます。