別ページのページ内アンカーリンクをよく使うのですが、IE11で動作しない現象が発生しました。(納品前夜。デバッグする時間は3日だった……)
環境はWordPressです。
リンク元のindex.html
1 |
<a href="moge/subpage/#hogehage">別ページへ遷移して</a> |
リンク先のsubpage/
1 |
<div id="hogehoge">ここに飛ぶ</div> |
基本はこれで問題がありません。
しかしIEのみうまく動作しなかったのです!!××IE××
ページのリンクは動作すれども、目的のIDに飛んでくれないのです。
飛び先のページでアドレスバーにカーソルを置いてエンターを叩くと、想定通りの動作はします。謎。
このアンカーは非常にバグが多く、様々な解決方が見受けられました。
スポンサードリンク
IE9以前でアンカーリンク(ページ内リンク)が効かない!
http://hcondo2000.blogspot.jp/2015/03/ie9.html
IEでページをまたぐアンカーリンクが効かない時の対処法 – TEDARE@仮想通貨
https://tedare.tokyo/archives/340
IEでアンカーリンクが効かない時の対処法3つ | 名古屋のホームページ制作なら株式会社SPOT
http://spot-web.jp/blog/1160/
FireFoxで他のページへのアンカーリンクが正しく動作しない時の対処 | http://design-ya.net/blog/2015/10/19/35/
上記記事を参照し、以下のようなコードになりました。
リンク元のindex.html
1 |
<br><a href="moge/subpage/index.php#hogehage">別ページへ遷移して</a> |
リンク先のsubpage/
1 |
<div name="hogehage" id="hogehoge">ここに飛ぶ</div> |
動きません……。上記FireFoxのJSで動くかなと思ったんですが、動きません。
しまいにはID変えたり、全然別の箇所にリンク先を貼ってみたりしましたが、飛びません。
<?php wp_head(); ?>を消して、CSS,JSの効いてない状態にすると動作しました。
JSが悪さをしていると思い、functionに書かれたJSをすべて削除しても動きません。
解決
……悩むこと数時間。
front-page.phpやheader.phpに直書きしていたJSをすべてfooterに持ってきたら動きました。
はぁ、死ぬかと思った。人生の無駄遣い。もはやIEは人類を不幸にするソフトウェアだ。xxxxxxxxxxx
もう別ページへのアンカーはやめよう……。