2008-09-29 21:41:12
JavaScript練習帖
JavaScriptを知っている人にとってはあまりにも当たり前の初歩的なことなんだろうが、何しろ私はJavaScriptだけは避けて生きてきたのだ。PHPとPython、ときにはRubyでなんとかやっていこうと思っていた。でも、どうも気になるので、もうJavaScriptから目を逸らさないことに決めたのだった。ほんの数週間前のことである。
Blog Developer's Cookbookというサイトの記事RSS feed を JavaScript で HTML に埋め込むを読んで、ちょっと真似してみた。何でも最初は真似である。私はいつも真似をして生きてきた。が、そんなことはどうでもいい。この記事では埋め込む.jsファイルをPerlで書いているが、私はPerlは解らないので、PHPで書いた。利用してみたのはAFPニュースのRSSである。
$xml = simplexml_load_file("http://www.afp.com/english/rss/stories.xml"); $output = "document.writeln('<h3>AFP News</h3><ul>');\n"; foreach($xml->item as $item){ $dc = $item->children('http://purl.org/dc/elements/1.1/'); $xitem = "document.writeln('<li><a href=\""; $xitem .= $item->link; $xitem .= "\" target=\"_blank\">"; $xitem .= $item->title; $xitem .= "\"<a><br />');\n"; $xitem .= "document.writeln('".$dc->date."</li>');\n"; $output .= $xitem; } $output .= "document.writeln('</ul>');\n"; file_put_contents("afp.js",$output);これで、AFPのニュースを埋め込み用ファイルafp.jsとして出力している。simplexmlでdc:dateを取得する方法を忘れていて、ちょっと戸惑ってしまった。上の$dcの行。これをcronか何かで、定期的に実行すれば、最新情報がafp.jsに保存される。その都度、情報を取得しに行く必要もないだろうから、これで一日二回とか実行すればいいのではないか。まあ、その都度取得しに行く方法を知らないから、今は何れにせよこれしかできない。これを実行すると、下のようなファイルができる。
document.writeln('<h3>AFP News</h3><ul>'); document.writeln('<li><a href="http://www.afp.com/english/news/stories/newsmlmmd.984ce7304f5b1936ad6df506f5f78f75.771.html" target="_blank">US lawmakers nail deal on Wall Street bailout"<a><br />'); document.writeln('2008-09-28T23:31+00:00</li>'); document.writeln('<li><a href="http://www.afp.com/english/news/stories/newsmlmmd.49a009e41d6df1ad48bec810cd48a5cc.2b1.html" target="_blank">Sudan says six tourist kidnappers killed in shootout"<a><br />'); document.writeln('2008-09-28T21:55+00:00</li>'); document.writeln('<li><a href="http://www.afp.com/english/news/stories/newsmlmmd.300f74a0cfc1d934503e71b3aa5aa8a6.fe1.html" target="_blank">Spate of Baghdad bombings kills 33"<a><br />'); document.writeln('2008-09-28T20:36+00:00</li>'); document.writeln('</ul>');
上には3項しか書いていないが、普通はもっと多くなるだろう。5とか10とか。こうして、できたafp.jsファイルを下のようにして、htmlの中に埋め込む。
<script language="JavaScript" src="./afp.js"></script>
埋め込まれるのはこんな感じになる。
これはすばらしい。私はいつもPHPで埋め込んでいたのだが、それだとPHPを使えるサーバでしか利用できない。これなら、いつでもどこでも埋め込めるじゃないか。でも、w3mとかlynxはJavaScriptを解さないので、読めなくなってしまうらしい。さっき引用元として挙げたサイトには、「Googlebot などの検索エンジンスパイダーも JavaScript を理解しません」と書いてあったけれども、今でもそうなのだろうか。この記事、5年前のもので、ちょっと古びてしまったところもある。
ということは、Googleに捕捉されない秘密のサイトを作れるということなのか。今度、こっそり作ってみようか。