iPhoneでアンカー位置に飛ばない場合はリダイレクトのせいかも

iPhoneでアンカーを指定したリンクをタップすると、画面遷移はするけども、アンカーの位置で表示されないという挙動がありました。 その原因はリダイレクトでした。

発生した挙動・状況

画面遷移して別の画面を開いたときにアンカーの位置を表示される、というのが期待している挙動だったのですが、画面遷移をしてもアンカー位置にスクロールされず、ページトップで表示されてしまいました。 アンカーはidを指定しており、aタグはhref属性の末尾にid名を追記しているだけの、シンプルなつくりです。 下記のような感じです。

<!-- 画面遷移してアンカーリンクの位置に遷移するテキストリンク -->
<a rel="nofollow" href="hogehoge.jp/hugahuga.php#anchor">アンカーリンク</a>

<!-- 画面遷移先のアンカーリンク -->
<div id="anchor">アンカーリンク</div>

確認した端末はiPhone6で、ブラウザはsafariでした。 android端末の、標準ブラウザ、chrome、firefox、operaでも確認しましたが、正常に遷移先の画面でアンカー位置で表示されていました。

どうやらリダイレクトが原因らしい

同じような現象で悩んでいる人がいないかと思い、調べてみたところ、こういう投稿をみつけました。

Opera, IE, Chrome, Firefox will carry over the anchor to the new page. However safari loses the anchor on the redirect.

引用元: Anchor tag doesn't work in iPhone Safari

要するに、safariはリダイレクが掛かるとアンカーを引き継がないという挙動のようです。 先ほどリンクをhogehoge.jp/hugahuga.php#anchorという風にかいていましたが、 実は、この現象が発生したサイトは、レスポンシブではなかったので、PCサイトをスマホで開いたときはスマホ用のURLにリダイレクトされるようになっていました。 ついつい「リダイレクトされるからスマホの画面作ってるけどPCのURLのままでいいっしょ」という軽い気持ちで、 hogehoge.jp/sp/hugahuga.php#anchorというようにスマホ用のURLを指定しなかったのがいけませんでした。

並べて書いたほうがわかりやすいですね。 hogehoge.jp/hugahuga.php#anchor hogehoge.jp/sp/hugahuga.php#anchor こういうことです。

ちゃんとスマホ用のリンクを指定すると、iPhoneでも遷移先のアンカー位置で表示されることが確認できました。

人気記事すべて表示

WEBすべて表示