childNodesの挙動がfirefoxでおかしい件
参考リンク:http://kusumoto.osakazine.net/e162722.html
簡単にいうと、IEではNodeとして認識しないものを(改行コード・タブ文字・空白 等)、
firefoxやsafariでは認識してしまう現象が起こってしまうようです。
対策方法としては、コードの最初で必要のないnodeを消してしまう。
ということで解決したいと思います。
解決方法1
→for文で再帰的にループさせて、タブとか改行コードのノードを削除するfunction child_node(node) {
for (var i = 0; i < node.childNodes.length; i++) {//if文で必要なノードか、必要でないコードか判断
if (node.childNodes[i].textContent === "\n\n" ||node.childNodes[i].textContent === "\n" ||node.childNodes[i].textContent === "\t" ||node.childNodes[i].textContent === " \n") {
if(node.childNodes[i].nodeName == '#text'){//ノード削除!削除した分だけデクリメントする
node.removeChild(node.childNodes[i]);
i--;
}
}else{
//ここで再帰的にchild_nodeを呼び出す
child_node(node.childNodes[i]);
}
}
}
//一番最初にdecumentを渡す
child_node(document);
解決方法2
→HTMLのソースからごそっと不必要なものを置換するdocument.body.innerHTML = document.body.innerHTML.replace(/>[\r\n\s]*<');
明らかに2個目のほうが、すっきりすぎる!!!
師匠に感謝^v^