JavaScriptでRSSをパースするスクリプトを作成してテストしていたら、Safariでだけうまく動作しなかった。

いろいろテストしてみたら、以下のような部分に問題があったことがわかった。

var siteLink = chnl.getElementsByTagName('link')[0].childNodes[0].nodeValue;

RSSのほうでは以下のような感じ。

-- 中略 --
<channel>
 <title>デジタルカタログ制作のデジパン</title>
 <atom:link href="http://www.digipan.jp/feed" rel="self" type="application/rss+xml" />
 <link>http://www.digipan.jp</link>
-- 中略 --

どうやら、Safariは名前空間atomのlink(atom:linkという要素)もgetElementsByTagName(‘link’)で拾ってしまうらしい。

IEやFirefoxではこのような問題はなかったが、どちらの解釈が正しいのかは不明。

そういえば、昔はFirefoxもこういう解釈だった気がするけど気のせい?