tl; dr - Safari на iOS 5 так сильно кэшируется, что он разбивает мой сайт.
Я борюсь с тем, как браузер Safari в iOS 5 занимается обратным кэшем вперед, который они называют "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>