tl; dr - Safari на iOS 5 так сильно кэширует, он ломает мой сайт.
Я борюсь с тем, как браузер Safari в iOS 5 справляется с возвратом впередкеш, который они называют «Page Cache».То, как это описано здесь , очень хорошо объясняет поведение.
Проще говоря, кэш страницы делает это так, что когда вы покидаете страницу, мы ее «приостанавливаем», а когда вы возвращаетесь, мы нажимаем «play».
Этовызывая проблемы по всему моему сайту.При использовании кнопки «Назад» большинство других браузеров отображают страницу в том состоянии, в котором она была загружена.Не Safari на iOS 5, он показывает страницу, как вы в последний раз ее покинули.Простым примером будет отключение кнопки отправки.Если я использую Javascript, чтобы отключить кнопку отправки, то отправлю форму, когда вы нажмете назад, кнопка отправки все равно будет отключена.Это было проблемой в других браузерах, включая настольную версию Safari, но она решается путем установки в обработчике события onload пустой функции.Я полагаю, что это говорит браузеру о недействительности кэша, поскольку в этой функции могло произойти что-то важноеПохоже, что этот взлом не работает для Safari на iOS 5.
Ниже приведена проблема, сводящаяся к основам.Когда вы загрузите test.html, вы увидите текст «Оригинальный текст».Если щелкнуть ссылку, этот текст изменится на «Изменен текст - пересылка на следующую страницу», а через 3 секунды вы будете перенаправлены на test2.html.Все хорошо до этого момента во всех браузерах.Во всех других браузерах, когда вы нажимаете кнопку «Назад», вы видите текст «Исходный текст», но в Safari для iOS 5 вы увидите «Измененный текст - пересылка на следующую страницу».
Любые предложенияо том, как с этим бороться?
Это простой пример
test.html
<script>
function changeText() {
el = document.getElementById("text");
el.innerHTML = "Changed text - forwarding to next page";
setTimeout("forward()",3000);
}
function forward() {
document.location.href = "test2.html";
}
</script>
<div id="text">Original Text</div>
<a href="Javascript:changeText()">Click Here</a>
<script>
window.onunload = function(){};
</script>
test2.html
<div>Click back button</div>
Это второй пример использования формы сообщения.Это простой пример того, как работает мое приложение.Когда вы вернетесь назад к formtest2.asp, вы должны увидеть опубликованное значение формы, и текст div должен быть оригинальным.
formtest.asp
<form method="post" action="formtest2.asp">
Test: <input type="text" name="test"/>
<input type="submit" value="Submit"/>
</form>
formtest2.asp
<script>
function changeText() {
el = document.getElementById("text");
el.innerHTML = "Changed text - forwarding to next page";
setTimeout("forward()",3000);
}
function forward() {
document.location.href = "test2.html";
}
</script>
<%
Dim test
test = Request("test")
Response.Write("Test value: " & test & "<br />")
%>
<div id="text">Original Text</div>
<a href="Javascript:changeText()">Click Here</a>
<script>
window.onunload = function(){};
</script>
test2.html
<div>Click back button</div>