- 締切済み
safari2でRSSの特定要素が読めない
お世話になります。 早速ですが、safari2でRSSの特定の要素が読めません。 具体的にはgetElementByTagNameでRSSの中の要素を取得できないことがあります。 たとえば以下のRSS(抜粋)で <item rdf:about="http://foo.bar/?eid=555567"> <link>http://foo.bar/?eid=555567</link> <title>タイトルです。</title> <description>内容です。</description> <dc:subject>ブログ</dc:subject> <dc:date>2007-05-28T16:54:38+09:00</dc:date> <dc:creator>hogehoge</dc:creator> <dc:rights>hogehoge</dc:rights> </item> 以下のコードを使って function getValue(tagName, objName, num) { if (num == undefined) num = 0; var element = objName.getElementsByTagName(tagName)[num]; if (element) { try { ret = element.firstChild.nodeValue; return ret; }catch (e){ return ""; } } else { return "no-element["+tagName+"]"; } } alert(getValue("date",items[0]))とすると”2007-05-28T16:54:38+09:00”と 表示されますが、 alert(getValue("'title'",items[0]))とすると”no-element[title]”となり要 素自体を取得できません。 いろいろためしたところ、"dc:xxx"となっている要素は取得できるのですが、先 頭に"dc:"がついていない要素の取得ができないようです。 WindowsでのIE6,IE7,Opera9,FireFox2では正常に取得できることは確認していま す。 対処法などございましたらご教授いただければ幸いです。 見づらい文となってしまい、申し訳ありません。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> いろいろためしたところ、"dc:xxx"となっている要素は取得できるのですが、先 > 頭に"dc:"がついていない要素の取得ができないようです。 XML+DOMについては詳しくないですが、namespaceの問題ではないでしょうか。 objName.getElementsByTagName(tagName)[num] ではなく、 objName.getElementsByTagName(tagName) これはnullにはなってないですか? nullでなければ、要素数はいくつでしょうか。 (document.titleのような要素が暗黙的に作成され、[0]となり、<title>と書いた物が[1]になっているかもしれません) getElementsByTagNameNS('', 'title')を使ってみてはいかがでしょうか。 OperaもXHTML(appliecation/xml等)とHTMLの扱い方が違いますし、動作が若干変わることがあります。 ご参考まで。
お礼
お返事遅れました。 ご回答ありがとうございます。 自分でもいろいろ調べたところ、下記の記述を見つけました。 http://staff.ark-web.jp/~takemura/public/pukiwiki/pukiwiki.php?cmd=read&page=Ajax%2FSafari%A4%C7XML%A4%F2%A5%D1%A1%BC%A5%B9%A4%B9%A4%EB%BA%DD%A4%CBHTML%CD%D7%C1%C7%A4%F2%A5%D1%A1%BC%A5%B9%A4%C7%A4%AD%A4%CA%A4%A4 結局のところsafariのバグのようですね。 なお、最近リリースされたsafari3ではこのような事象は発生しません。