Ce problème semble se produire uniquement dans la dernière version de Safari (4.0.4). En utilisant l'exemple ci-dessous, la page créera une boîte d'alerte après 60 minutes. Si vous ouvrez la page suivante, cliquez sur le lien vers Google, et appuyez sur le bouton de retour de votre navigateur, rien ne se passera. Cela fonctionne comme prévu.Comportement de setTimeout inattendu dans Safari 4.0.4
Cependant, si j'ouvre la page suivante dans Safari, cliquez sur le lien, puis appuyez sur le bouton de retour, la boîte d'alerte apparaîtra immédiatement. Cela semble se produire seulement au premier essai et ne se produira pas jusqu'à ce que je fasse un rafraichissement ou ferme complètement Safari.
Est-ce prévu?
<!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>
Cette erreur semble se produire uniquement lors de l'exécution à partir d'un site non-ssl. Je peux reproduire le problème en visitant la page http: //localhost/test.html. Cependant, le bug n'apparaît pas lorsque je visite https: //localhost/test.html. – nivlam
Oui, je crois que Firefox et Safari désactivent le bfcache sur les pages HTTPS. – bobince