J'ai un problème avec les événements natifs de Cross-Browser par rapport aux événements CallBack. J'ai un lien HTML "Click Me" avec href=""
donné Sur dom:loaded
j'attache une fonction à ce lien (faire Ajax Stuff).Traitement du clic natif du navigateur avant dom: chargé
Le code JavaScript est chargé à la fin de la page pour suivre YSlow Recommandation.
Problème:
Si vous chargez cette page très rapidement (en appuyant sur F5) puis cliquez sur le lien puis
- le
alert()
n'est pas appelé - le lien est suivi (rechargeant la page
Cela se produit lorsque le serveur est en retard. En fait la page n'a pas fini de charger et le navigateur exécute le code.
Demo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<a href="#toolate" id="action">Click Me</a>
<!-- According to YSlow Recommandation load at the bottom -->
<script src="../js/lib/prototype.js" type="text/javascript" language="JavaScript"></script>
<script>
/* <![CDATA[ */
document.observe('dom:loaded', function() {
$('action').observe('click', function(event){ alert("click"); Event.stop(event); });
});
/* ]]> */
</script>
</body>
</html>
Turn Around:
Un tour est autour d'ajouter onClick="return false;"
:
<a href="#toolate" id="action" onClick="return false;">Click Me</a>
Il fonctionne pour les LAG mais pas pour un clic rapide. Et je n'aime pas ce genre de tour autour parce que mon but est d'enlever la onclick
sur tous <a href="">
Cordialement
Pouvez-vous simplement désactiver le contrôle puis activez i t lorsque le chargement du document est terminé? En d'autres termes, si vous pouvez gérer le clic avant le chargement de la page, n'autorisez pas les clics avant le chargement de la page. –
D'accord mais comment dit-on au navigateur: "ne pas suivre ahref jusqu'à ce que le chargement du document se termine"? Vous pouvez utiliser JavaScript mais engin n'a pas encore démarré. –
J'ai ajouté une démo: http://files.getdropbox.com/u/255810/Jalios/Demo/Shield/shield.html –