りょーちの駄文と書評:Google Random Image を試してみた の記事を読んで、僕もGoogle Random Imageを試してみました。 JavaScript+iframeで、Googleイメージ検索の検索結果を切り替えて、表示する方法です。 Firefoxでも動く(はずの)サンプルを、「JavaScriptでGoogleイメージ検索の画像をランダムに表示する方法」に設置しました。10秒おきに画像が切り替わります。
google hack from douwe osinga にオリジナルのソースと説明があります。 実際に設置してみたJavaScriptのコードと サンプル例(IEでないと動かないと思います)。
walkHtml()でページの文章を取得し、 boxfill()で単語ごとに切り分けてloadword()を一定時間ごとに呼び出しているようです。 loadword()で、Googleから画像を呼び出して表示しています。 id「searchLabel」のspanに検索キーワード、id「imagebox」のインラインフレーム(iframe)に画像を出しています。
JavaScriptで、
imagebox.document.body.innerHTML='<iframe width=1000 height=1000
src="http://images.google.com/images?&q='+escape(searchfor)+'"></iframe>';
imagebox.scrollTo(50,200);
と、Googleの検索結果を取得しつつ、画面をスクロールして、表示部分のインラインフレーム(iframe)を、
<iframe id="imagebox" width="150" height="130" vspace="0" hspace="0" frameborder="0" scrolling="no">></iframe>
とする事で、一部分を切り出す仕組みです。
残念ながら、Firefoxでは、動きませんでした。replaceNode~や、imagebox~のあたりが、どうも良くないみたいです。
元々のGoogle Random Imageは、2(javascriptをHTMLに直に書けば1)つのファイルで動くのですが、 僕が書いたのだと、3(or 2)つのファイルで動きます。りょーちさんのソースを参考に、ランダムに単語を指定して表示する仕組みです。
表示用のページ(index.html)と Googleイメージ検索を呼び出すページ(gri.html)と gri.htmlから呼び出すJavaScript(gri.js) の三つです。
JavaScript(gri.js)をgri.htmlで呼び出し、Googleの検索結果画面を取得しています。
document.getElementById("imagebox").src=baseurl+encodeURI(searchfor);
document.getElementById("searchlabel").innerHTML=searchfor;
window.scrollTo(20,190);
の部分が、オリジナルと対応している所です。
表示用(index.html)と、呼び出し(gri.html)にある インラインフレーム(iframe)それぞれのサイズで表示を調節しています。
直接index.htmlからGoogleの画面を呼び出したものを、スクロールする事がうまく出来なかったので、 仕方なく、iframeで呼び出したgri.htmlをgri.jsでスクロールしています。 (画面の表示位置を変えるためだけに、1ファイル余計に使っている!しかも、ブラウザによっては、うまくスクロールしてくれない!)
(誰か改良してくれないかな。scrollTo()を、どうやったらうまくインラインフレームに適用できるのか、よくわからない)。
iframe(インラインフレーム)内の情報を引っ張ってこれないかなと思って検索しました。メモ。
なんだか、難しそうだ…。 「document.getElementById('フレームのID').contentDocument」というのは、初めて知りました。 こんなのがあるなんて!
カテゴリー [ javascript ] [ メモ・覚え書き ]
|
|
1.
|
|
|
2.
|
|
|
3.
|
|
|
4.
|
|
|
5.
|
|
|
6.
|
|
|
7.
|
「JavaScriptとiframeで、Googleイメージ検索の画像をランダムに表示する方法」へのコメント
by りょーち | 2007年01月31日 09:26
by marusankakusikaku | 2007年02月06日 17:14