Je fais quelques petits travaux de programmation et de web pour un collège communautaire local. Ce travail comprend la maintenance d'un site web très volumineux et destructeur d'âme qui consiste en un fatras de VBScript, de javascript, d'éléments générés par Dreamweaver et d'une collection de modules complémentaires que divers escrocs les ont convaincus d'acheter au fil des ans.
Il y a quelques jours, j'ai reçu un appel m'indiquant que le site Web se bloquait pour les utilisateurs de Safari. Ok, premièrement, je télécharge Safari (v3.1.2), deuxièmement, je navigue sur le site. Tout semble fonctionner correctement.
Pour faire court, j'ai finalement isolé le problème et il est lié au bouton retour de Safari. Le site Web utilise un menu javascript sophistiqué qui fonctionne dans tous les navigateurs que j'ai essayés, y compris Safari, la première fois. Mais dans Safari, si vous suivez un lien hors de la page et que vous appuyez ensuite sur le bouton retour, le menu ne fonctionne plus.
J'ai créé une page web simplifiée pour illustrer le principe.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Safari Back Button Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onload="alert('Hello');">
<a href="http://www.codinghorror.com">Coding Horror</a>
</body>
</html>
Chargez la page et vous verrez la boîte d'alerte. Suivez ensuite le lien hors de la page et appuyez sur le bouton Retour. Dans IE et Firefox, la boîte d'alerte s'affiche à nouveau, mais pas dans Safari.
Après une recherche vigoureuse sur Google, j'ai découvert d'autres personnes ayant des problèmes similaires, mais aucune réponse vraiment satisfaisante. Ma question est donc la suivante : comment puis-je faire en sorte que mes pages fonctionnent de la même manière dans Safari que dans les autres navigateurs après que l'utilisateur a appuyé sur le bouton "retour" ?
S'il s'agit d'une question stupide, soyez indulgent, javascript est quelque peu nouveau pour moi.