ユーザーが私たちのページを読み込んだときに、モバイル デバイスを使用しているかどうかを確認し、サイトのモバイル バージョンにリダイレクトしますが、元のハッシュ タグは保持するようにしたいと考えています。彼らがたどったリンク。javascript でハッシュ タグを使用して新しい場所を設定しようとしましたが、Chrome では機能しますが、Safari では機能しません。これはSafariが行うことだと読みました。これに対する回避策はありますか?
3 に答える
「#」記号をエスケープする必要があり、すべて問題ありません
実際、お客様から非常によく似たバグ レポートを受け取りました。
私たちにとって、このシナリオには の形式のハッシュタグが含まれており#quicklogin/abc123
、Safari でサイトを表示したときにのみ表示されました。これは、クライアントがロードする最初の URL の一部であり、別のログイン画面が表示されます。Safari で URL に直接アクセスすると、ブラウザはタグ全体を削除して無視しました。
#quicklogin/test
これを(またはアルファ文字のみを含む他のハッシュ) のようなものに変更すると、正常に機能しました。また、サイトを読み込んでから、2 つの別々の手順でハッシュ タグを手動で適用するときにも問題なく機能しました。
したがって、Safari で数値を含むハッシュタグに問題がある可能性があるというのが私たちの結論です。
これを行うには、javascript でリダイレクトするか (javascript はハッシュ値を読み取ることができるため)、条件付きでユーザー エージェントに基づいて異なる html を返す必要があります。
ブラウザは 302 を介してハッシュ フラグメントを保存することになっていますが、多くの場合そうではありません (以下の 3 年前の Webkit バグを参照)。それ以外の場合、ハッシュ フラグメントはサーバーに送信されないため、手動で処理できません。