21

あるページを別のページにポイントしてから、特定のセクションまでスクロールする必要があります。Chrome と Firefox では、次のような URL を使用するとwww.example.com#section1うまくいきます。(#section1 は、アンカーまたは要素の ID にすることができます)。

ただし、Safari では、リンクをクリックするとハッシュが消えます。

なぜこうなった?Safariでそれを行うことは可能ですか? そうでない場合、どうすればこの問題を回避できますか?

4

5 に答える 5

1

次のことを行うときに、Safari (iPhone/iOS) でハッシュ/フラグメントを削除しているように見える関連の問題がありました。

var newHash = ...;
window.location.replace("#" + newHash);

実際の問題は、Safari でのみ発生するJavaScript エラーでした。iPhone 用の JavaScript コンソールを簡単に評価できなかったので、Windows の Safari の古いバージョンをダウンロードすることにしました (関連記事ダウンロード)。

次に、古いバージョンの Safari を使用して、Windows デスクトップ上の iPhone から問題を再現することができました。その時点で、javascript タグに']' がないことがわかりました。これは正当なバグでしたが、Chrome、Firefox、および IE ではなぜか無視されました。

javascript エラーでコードが壊れていたため、window.location.replace() は呼び出されていませんでした。したがって、問題は Safari がハッシュタグを削除したことではありません。

于 2015-09-03T18:04:05.910 に答える