私は、モバイル(iOS版10.2.1)のSafariやChromeの[戻る]ボタンを使用する場合:ページはiOSのブラウザで戻るフォワードキャッシュから取得されたときに、一貫発射されるイベント
- ウィンドウのpageshowイベントをfired only onceです。 がで提案:
- 7、6、5、4、3、2、1ウィンドウのpopstateイベントは発生しません。 in:1,2,3
- 文書のreadystatechangeイベントが発生していません。 で提案されました:1
なぜこれが必要ですか?
クリックで送信ボタンを無効にするため、フォームを複数回送信することはできませんが、ブラウザの戻るボタンを使用してページに戻ると、送信ボタンはBFCacheのために無効のままです。
ユーザーがページを離れたとき、または戻ったときに発生して、送信ボタンを再び有効にすることができるイベントが必要です。アンロードイベントが発生されることはありません、とpagehideとpageshowのイベントは初回のみで焼成されています
- は、私はページB. Aのpagehideが発射される
- にページAから移動(アンロードが発生しません)。
- ブラウザの戻るボタンを使用して戻る。
- Aのページショーが発生しています(load、popstateまたはreadystatechangeは起動されません)。
- もう一度Bに移動しますが、今回のAのページは非表示になります。
- もう一度戻るボタンを使用して戻ると、Aのページショーも起動されません。
- その後のバック/フォワードは、私が見つけることができるイベントを引き起こさない。
回避策の一つは、最初の後ろにページを更新します
window.addEventListener('pageshow', function (e) {
if (e.persisted) {
window.location.reload();
}
}, false);
しかし、それはBFCacheの全体のポイントを挑みます。ブラウザの「戻る」ボタンがページ全体を再読み込みせずに使用されているときに、何らかの作業を行う信頼できる方法はありませんか?
これで運が良かったですか?私はまだこれを動作させることに苦労しています。 – morgoe