Tags : web
このTagsの登録数:3件 表示 : 1 - 3 / 3
アマゾン検索サイドバー
Ajax(Google で検索)という言葉を最近よく目にする。JavaScript を使って、通常の操作とは別の手段でリクエストを送ることにより、なんかインタラクティブな感じを与える作戦のようだ。
というわけで Ajax (と Amazon Webサービス)でアマゾン検索サイドバーを作ってみた。
アマゾンサイドバー(http://hetima.com/awsbar/)
SafariStand をお使いの方は上記リンク先のページを Stand Bar に追加すれば利用できます。Mozilla のサイドバーでも使えるでしょう。サイドバーじゃなくても使えますが、レイアウトは細長い表示に最適化されています。
いちどに10件ずつ結果を表示し、追加検索をすれば次のページに行くのではなく、同一のページで結果がたまっていく。この辺が Ajax な感じだ。商品のリンクをクリックすると amazon.co.jp のページを表示します。
*この検索結果から amazon.co.jp へのリンクはアフィリエイトリンクになっています。
track feed を置いてみる
track feed を設置してみた。リファラを RSS で知らせるというアイデアは素敵。うちは xrea を借りていて、analog による集計と生ログを取れるのでリファラを知るには困らないが、更新されるのが翌朝だったり、見るの面倒だったりする。track feed は早いし手軽に確認できて面白い。そしてこの RSS を見るには、SafariStand の RSSリーダーが適していた。ブラウザに組み込みで質素なインターフェイスのおかげで手軽さを殺さない。
これくらいの機能なら自前で用意できるなと思ったけどしばらく設置しておこう。
Safari では Google サジェスト で日本語が文字化けしていた(改善されている)。これに限らず Ajax のサンプルで文字化けすることが多い。原因は JavaScript の XMLHttpRequest にある。具体的には、responseText の返り値が文字化けしている。Google サジェスト では XML ではなくただのテキストをやりとりしている。Safari ではデータの内容が XML ではないテキストだと responseText が文字化けしてしまう。この内容が XML であれば化けない。
XMLHttpRequest て名前なんだから XML で渡すべきなのかもしれないが、XML を渡して JavaScript 側でパースするより、扱いやすいデータで渡した方が実装が楽だったり負荷が軽かったりする場合もある。Google サジェスト はスクリプトコードを受け渡していて、そのまま eval しているようだ。
ひさしぶりに WebCore のソースを見る。JavaScriptCore ではなく WebCore の方で実装されていて、ファイルは /khtml/ecma/xmlhttprequest.cpp。エンコーディングに関する箇所に「FIXME」コメントがあるのでここか? でも XML では化けないから一応ちゃんと設定されてはいるのかな? ていうか暇が無い。また今度。
ちなみにアマゾン検索サイドバー(日本語が検索できなかったぽいのを修正) は HTML を受け渡しているのだが、この文字化けを回避するために、要素が1個の XML に包んで渡すようにしている。
追記:2005-08-06
Google サジェストは化けなくなってますね。