2010-07-24 7 views
6

Je regardais google.com source et a vu:
<!doctype html><html onmousemove="google&&google.fade&&google.fade(event)">Quelle est la différence entre placer l'écouteur d'événement sur le tag HTML et le tag BODY?

Je ne savais pas la balise HTML pourrait accepter des écouteurs d'événements. Quelle est la différence entre placer l'écouteur d'événement sur le tag HTML et le tag BODY? Y a-t-il une différence dans l'événement qui bouillonne?

+0

Sur le corps, il ne peut pas faire de bulles. –

+3

@ James Black: Ce n'est pas vrai, il bulles toujours à 'document' après' ':) –

+0

@Nick Craver - Bon point, j'ai oublié à ce sujet. J'ai tendance à m'arrêter à l'étiquette du corps. –

Répondre

1

J'ai vu cela il y a quelques jours et je n'y ai pas vraiment réfléchi. Mais l'une des raisons pourrait être « performance » comme il est toujours avec Google :)

Pour un client extrêmement lent, <html> sera analysée première chose et le gestionnaire onmousemove sera prêt à faire feu si l'utilisateur déplace la souris. S'il y a trop de contenu à l'intérieur <head>, cela peut être préférable car le onclick sur <body> peut prendre un peu de temps pour s'enregistrer car tout ce contenu principal doit être téléchargé et analysé en premier.

En fait, cela se produit déjà, il y a environ 2KB de contenu avant que <body> apparaisse.

+0

Dois-je déplacer tous les écouteurs d'événements de mon corps vers la balise HTML? –

+0

Sauf 'onload'. Cela, je crois ne sera pas envoyé au format HTML du tout. – Anurag

+0

En fait, c'est faux, tous les événements ne s'appliquent pas à l'élément html. Tout comme le changement n'aurait aucun effet sur le corps, il ne fonctionnera pas non plus sur html. Et la charge ne fonctionne pas en fonction des tests locaux, mais je ne trouve aucune documentation à l'appui. – Anurag

Questions connexes