案外やっかいなAjax

RSSフィードをGETしてHTMLに整形してDocument中に埋め込むスクリプトを作ろうとして、遅蒔きながらAjaxに手を出した。

RSSフィードをそのままXMLドキュメントとして読み込むと、Firefoxでは改行が空ノードになってしまう。XMLの仕様に厳格に沿っているのかもしれないが、かなり窮屈な仕様だ。

IEFirefoxでの動作をなるべく同じにしたいと思って、RSSフィードJSONに変換したものを読み込ませると、今度はSafariで文字化けしてしまう。Safariの場合はutf-8にはBOMが必要らしいのでBOMを付けると、今度はなぜかIEで読み込めなくなる。

うーむ。頑張ればスクリプトでブラウザ間の差異を吸収できるのだろうけど、昔からJavaScriptバッドノウハウの宝庫だったが、今になっても変わらないのかと思うと気が重くなる。

追記: その後にわかった事

  • Safariutf-8RSSにはBOMを付けないと文字化けする
  • Safari で getElementsByTagName がうまく機能しない
  • IE6はJSONの配列の最後の要素の後にカンマがあるとエラーになる
  • IE6はRSSの Content-Type が application/rdf+xml だとエラーになる。application/xml ならOK。