Кнопка остается отключенной после "назад" в сафари из-за bfcache

Я отправляю форму, используя

$('#submitbutton').attr('disabled','true');
setTimeout(function(){ $("#myform").submit(); }, 100);

В Safari при возврате на эту страницу нажатием кнопки "Назад" в браузере эта кнопка по-прежнему отключена.

Я попытался добавить:

$( document ).ready(function() {
    $('#submitbutton').removeAttr("disabled");
...

но это тоже не работает.

Я посмотрел онлайн, и кажется, что это связано с bfcache, Хотя я понимаю концепцию этого кэша и то, как это может улучшить скорость загрузки, я не хочу, чтобы он был на этой странице. Есть ли простое решение, чтобы отключить его, кросс-браузер? Всем решениям, которые я нашел в Интернете, 2-5 лет, и они не работают.

Обратите внимание, что в Chrome все работает нормально: кнопка включена И все мои JS выполняются после нажатия кнопки назад.

Я мог бы реализовать такие вещи, как включение кнопки на странице выхода или что-то в этом роде, но мне действительно не нравится это разное поведение в разных браузерах. Поэтому я хочу отключить bfcache для всех браузеров, ИЛИ использовать bfcache во всех браузерах.

Примечание. Я не хочу принудительно обновлять страницу после нажатия кнопки "Назад", потому что это выглядит очень уродливо и громоздко на моей странице.

2 ответа

Решение

Получил это, добавив этот код PHP:

<?php
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
?>

Событие pageshow может быть запущен даже в bfcacheтак что напишите свой js-код следующим образом:

window.addEventListener('pageshow', function( e ){
    //your code
});
Другие вопросы по тегам