Кнопка остается отключенной после "назад" в сафари из-за 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
});