Dans l'exemple suivant, j'obtiens une seule zone d'alerte. J'ai lu que l'accent est mis avant que le code JavaScript est exécuté. Y a-t-il un moyen de le faire fonctionner?onfocus n'est pas appelé lors de l'utilisation de l'attribut autofocus sur une étiquette d'entrée
<input id="i" type="text" autofocus onfocus="alert(1)">
<script type="text/javascript">
document.getElementById('i').addEventListener('focus', function() {
alert(2);
}, false);
</script>
(je n'ai testé dans Safari)
Edit: Je ne peux évidemment le faire de cette façon (sélecteur prototypejs):
var autofocusElement = $$('input[autofocus]')[0];
callListener(autofocusElement);
Mais il semble laid par rapport à ajouter seulement un écouteur d'événement.
Edit:
Ne vous inquiétez pas sur un manque de soutien du navigateur pour l'attribut autofocus. Il a résolu facilement comme je l'ai fait dans les liens de violon que je fais ci-dessous. Il y a aussi la meilleure solution au problème que je peux voir. Ma question est si je peux le faire dans un moins laid que d'avoir à appeler l'auditeur manuellement.
http://jsfiddle.net/tellnes/7TMBJ/3/
Il fonctionne très bien dans Firefox 3.6 car Firefox ne prend pas en charge l'autofocus. Mais dans Safari, qui prend en charge l'autofocus, l'événement n'est pas appelé.
Mauvais lien de violon? – Rahul
@Rahul On dirait que j'ai renommé mon nom d'utilisateur jsfiddle depuis sa publication. J'ai mis à jour le lien. –