Hatena::ブログ(Diary)

nazonoDiary

2005-03-10 木

URIのhashで状態を保存する

| 11:22 | URIのhashで状態を保存するを含むブックマーク URIのhashで状態を保存するのブックマークコメント

↓(ご一緒にポテトはいかがですか〜〜)の続きで、

最速インターフェース研究会 [Ajax] location.hashを使ったセッション復元 http://la.ma.la/blog/diary_200502270128.htm

というのをやってみたんですが、茨の道が…


XMLHTTPRequest を open("GET", url, true) で呼び出します。で、url に "?" から(クエリから)始まる相対指定をすると( "?rs=action" みたいなの)Mozilla の HTTP は「 GET /hoge/hoge/ 」なんですが、IEは 「GET /hoge/hoge/#%xx%xx 」と、ハッシュ以下をサーバに渡してしまい、Apache が # 以下を探しに行って NotFound になってしまう(;・∀・) 参考までにIE で取りに行ったときの Apacheのログ

[Thu Mar 10 10:09:38 2005] [error] [client 127.0.0.1] File does not exist: x:/htdocs/nazoking/suggest/#

x:/htdocs/nazoking/suggest/index.php は存在し、 suggest/ では取りに行けます…JavaScriptは茨の道


なんで相対指定だったかというと SAJAX というパッケージを使ってたからなんですが。で、これに気づいてパッケージの方を改変して url を location.path + "?rs=action" にしたところ、取りに行く方はうまくいったんですが、今度は location.hash の挙動が違うんです。具体的に言うと Mozilla が化ける!(;´д⊂)

なんだよこれ、使えねぇよヽ(`Д´)ノ 最速インターフェース研究会の人に文句を言いにいこうと思ったら

http://ma.la/mirrorman/wiki.cgi/location.hash

firefoxでの文字化け

firefoxの場合、日本語を使うと化けてしまうようだ。

location.href.replace(/.*?#/,"")で取得してやれば化けない。

Σ(゜д゜lll)


つうことで、location.hash で検索文字列を保存します。

ポテトを検索→ http://nazo.yi.org/suggest/#%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC

KATSUOKATSUO 2005/03/15 11:23 gooのUTF8対応って下記でいいですか?
継続的な保証は出来かねますが^^;
http://search.goo.ne.jp/web.jsp?MT=%E6%97%A5%E3%80%85%E3%81%86%E3%82%8D%E3%81%8A%E3%81%BC%E3%81%88%E8%A8%98&IE=UTF-8

nazokingnazoking 2005/03/15 13:30 おお、ありがとうございます。ちょっと実装してみます。
こちらも継続的にサービスはしないですので大丈夫です(汗

nazokingnazoking 2005/03/15 13:50 ってことで実装してみました

Connection: close