またもJavaScriptプラグラミングでつまづいた話。InnerHTMLを書き換えようとするとエラー。
Chromeでのエラーメッセージはこうだ。
SyntaxError: Failed to set the ‘innerHTML’ property on ‘Element’: The provided markup is invalid XML, and therefore cannot be inserted into an XML document.
一方、IE11では「 Syntax Error 」とだけ言われる。これじゃ、なんのことやらわからない。これに比べるとChromeのメッセージはだいぶ手がかりにはなる。
このエラーが出るのは一部のWebページのみ。その違いがわからない。DOCTYPEとかHEADタグの違いかなあ、と思うのだけど、同じようなので大丈夫なのもある。
とりあえず、いろいろ調べる。文字通り、書き換えるためのコードがXMLになってないってことだろうと思うので、細かくチェック。
「 & 」とか引用符をエスケープしてみたけど、それは関係ない模様。 「 <br /> 」とすべきところを「 <br> 」みたいにしてるところがあった。閉じタグの問題であった。styleとかが付いてると見逃しがちなのだよな。これも文法チェッカ使えば楽だったのかもしれず。そういうエディタ使えっていう話もあるんだろうけど。
あとは、どういうドキュメントでこれが発生するかを調べなくてはならない。とりあえず後回し。
コメント