ChromeとSafariでwindow.location.hashで実行したページ内リンクが1度しか効かない現象

表題の件ですが、どつぼにはまっておりましたが、ようやく解決。同様の現象に困っている人がいるかもしれないのでメモがてら公開しておきます。

<script type="text/javascript"><!--
window.location.hash='';
window.location.hash='pagetop';
} // --></script>

<head></head>の間に記述したこの命令文を、onclickで呼び出します。

window.location.hash='';
window.location.hash='pagetop';

ポイントはこの部分。なるほど、一度hashを空っぽにして、再びpagetop等のID名を指定してやればいいんですね。こんな簡単な方法で解決できるとは・・・。

ChromeとSafariでは、一度指定されたhashは2回目以降は実行されないという仕様があるみたいです。IEやFirefoxでは問題なくページ内リンクで移動ができたのですが、ChromeとSafariでこの現象に遭遇してしまい、かなり時間を使ってしまいました・・。

ChromeとSafariでアンカーに飛ばないTAG index

こちらで試した限りでは、ChromeでもOKでした。
ただし初回のみです。すでにhashがpagetopになっている状態で、再度書き替えても(変更がないので)そのままでした。多分>>0はこのことを指していると思いますが、それでよろしいですか?

ああ、まさにその通りの解釈です。あまりにもドンピシャの解答でしたので、TAG indexさんのBBSから引用して紹介しておきます。

ちなみに、上記のJavascriptでも動かない、という場合は、しっかりと<a id=”pagetop” name=”pagetop”/></a>といった具合に、aタグが入っているかも確認しておきましょう。ここが抜けているために、しっかりと動作しないという場合もあります。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク