Такое поведение наблюдается только в последней версии Safari (4.0.4). Используя приведенный ниже пример, страница создаст окно оповещения через 60 минут. Если вы откроете следующую страницу, нажмите ссылку на Google и нажмите кнопку возврата своего браузера, ничего не произойдет. Это работает так, как ожидалось.Неожиданное поведение setTimeout в Safari 4.0.4
Однако, если я открою следующую страницу в Safari, перейдите по ссылке, затем нажмите кнопку «Назад», появится окно предупреждения. Кажется, это происходит только с первой попытки и не повторится, пока я не сделаю жесткое обновление или полностью закрываю Safari.
Ожидается ли это?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript">
window.onload = function() {
setTimeout(function() {
alert('hit');
}, 60 * 60 * 1000);
}
</script>
</head>
<body>
<a href="http://www.google.com">Click me, then press the browser's back button.</a>
</body>
</html>
Эта ошибка возникает только при работе с сайтом, отличным от ssl. Я могу воспроизвести проблему при посещении страницы http: //localhost/test.html. Однако ошибка появляется, когда я посещаю https: //localhost/test.html. – nivlam
Да, я считаю, что Firefox и Safari отключили bfcache на HTTPS-страницах. – bobince