人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascriptの質問です。
ページ内のアンカーリンクで以下のように遷移したとします。

index.html#aaa→index.html#bbb→index.html#ccc

このとき、最後のindex.html#cccから、ブラウザのバックボタンを押して、
index.html#ccc→index.html#bbb
と戻ったときにある関数A(bbb)を呼び出したいのですが、
それは可能でしょうか?

アンカーリンクの場合、ページがリフレッシュされないので、ハンドラを何にすればいいのか検討がつきません。

よろしくお願いします。

●質問者: iiiiiiiii
●カテゴリ:ウェブ制作
✍キーワード:AAA CCC HTML INDEX JavaScript
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● skky
●20ポイント

ページがリフレッシュしても構わなければ

index.html?dummy=aaa#aaa→

index.html?dummy=bbb#bbb→

index.html?dummy=ccc#ccc

とすれば別URLと認識してリフレッシュするので

body onLoadをイベントハンドラにすれば良いと思います。

#dummy=は無視されて何も処理されません。

◎質問者からの返答

リフレッシュしてはまずいんです。

すみませんが、他の方法はありませんでしょうか?


2 ● backupper
●50ポイント ベストアンサー

イベントが思いつかないので、タイマでlocation.hashの変化をポーリングしてみてはどうでしょう?

HashChange.prototype.hookに無名関数を定義すると、イベントの補足後に好みの処理を実行できます。

#cccから#bbbに限定したい場合は、listenメソッドで条件分岐すれば対応できると思います。

<html>
<head>
<title>question:1150720943</title>
<script type="text/javascript">
function HashChange() {
 this.hashValue = "";
 this.listen = function () {
 if (location.hash != this.hashValue) {
 this.hashValue = location.hash;
 this.hook();
 }
 }
}
HashChange.prototype.hook = function () {
 alert('hook');
}
he = new HashChange();
window.setInterval('he.listen()', 500);
</script>
</head>
<body>
<h1><a name="p1">p1</a><a href="#p2">#p2</a></h1>
<h1><a name="p2">p2</a><a href="#p3">#p3</a></h1>
<h1><a name="p3">p3</a><a href="#p4">#p4</a></h1>
<h1><a name="p4">p4</a><a href="#p5">#p5</a></h1>
<h1><a name="p5">p5</a><a href="#p6">#p6</a></h1>
<h1><a name="p6">p6</a><a href="#p7">#p7</a></h1>
<h1><a name="p7">p7</a><a href="#p8">#p8</a></h1>
<h1><a name="p8">p8</a><a href="#p9">#p9</a></h1>
<h1><a name="p9">p9</a><a href="#p1">#p1</a></h1>
</body>
</html>
◎質問者からの返答

ありがとうございます。

やはりそうなりますよね。

監視し続けるのは処理が重いかなと思って、敬遠していましたが、それが一番現実的なのかも知れないですね。ありがとうございます。

書いていただきましたものを試してみましたが、CPU使用率も10%もいかないようなので、これでいけそうです。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ