めも:ajaxの戻る

2008/7/11 [01:02:28] (金) 天気

またハマってるのがajax…ブラウザの戻る。


ブラウザの「戻る」自体はわたし自身もよく使うし、いわゆるユーザビリティを考えても、ブラウザ標準の機能をサービスの都合でどーこーするのは、発想する時点で負け確定。

とはいえ、確認画面なんかで、おっといけない書き直し、となった場合、用意されてる「戻る」ボタンじゃなくて、ブラウザの「戻る」を押すことが多くて(わたしはSleipnirでマウスジェスチャで戻る)それはそれで問題。

ブラウザで戻られると、ajaxで出してるフローティングコンテナのフォームがぶっ飛んでしまう。

せめて一度だけこのときだけでもブラウザの「戻る」は「なにもしない」で欲しい、と。


あれこれ検索してみて、とりあえず一度きり、ブラウザの戻るを「なにもしない」にしてみる。


if(document.all){

  var ifr = document.createElement(’IFRAME’);

  ifr.style.cssText="display:none";

  document.body.appendChild(ifr);

  var iframe = frames[frames.length -1].document;

  iframe.open();

  iframe.close();

  iframe.location.hash="#books";

}

else{

  window.location.hash="#books";

}


location.hashにテキトーな値を入れると、URLの履歴にページ内ジャンプのURLが追加される=ページ遷移が起こらない。これを利用してブラウザの戻るを意図どおり一度だけ「なにもしない」にできる。

ajaxが絡むページ移動やブックマークではこいつをさらにガリガリ使って、いわゆるフツーのページ遷移・ブックマークを実現する…らしいけど、わたしはそこまで考えてないし、そんなスキルもない。


で、どうもIEだけが別扱いらしく、widndow.location.hashに値を入れても反応してくれない。

document.allでくくった中のように、ダミーでiframeを生成して、そのiframeをopen→closeして、そのiframe のlocation.hashに値を代入、なんて二度手間三度手間してようやく。


うーん、でもこれでいいのか、本当に意図どおりなのか、てのはいろんなパターンを検証しないとわからんちんだなぁ。


<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】