2010-07-24 10 views
6

Szukałem na google.com źródła i zobaczyłem:
<!doctype html><html onmousemove="google&&google.fade&&google.fade(event)">Jaka jest różnica umieszczania detektora zdarzeń w tagu HTML od tagu BODY?

Nie wiedziałem tag HTML mógłby zaakceptować nasłuchiwania zdarzeń. Jaka jest różnica umieszczania detektora zdarzeń w tagu HTML od tagu BODY? Czy jest jakaś różnica w bulgotaniu zdarzeń?

+0

Na ciele nie może się nigdzie bąkać. –

+3

@James Black: To nieprawda, nadal pęcznieje do 'dokumentu' po' ':) –

+0

@Nick Craver - Dobra uwaga, zapomniałem o tym. Mam tendencję do zatrzymywania się przy tagach ciała. –

Odpowiedz

1

Widziałem to kilka dni temu i nie zastanawiałem się zbytnio. Ale jednym z powodów może być "wydajność", tak jak zawsze jest z Google :)

Dla wyjątkowo powolnego klienta, najpierw zostanie przeanalizowana <html>, a obsługa onmousemove będzie gotowa do strzału, jeśli użytkownik poruszy myszą. Jeśli zawartość jest zbyt duża wewnątrz <head>, może to być bardziej korzystne, ponieważ rejestracja onclick na <body> może zająć trochę czasu, ponieważ najpierw należy pobrać i przeanalizować całą zawartość nagłówka.

Faktycznie to już się dzieje, pojawia się około 2KB zawartości przed <body>.

+0

Czy należy przenieść wszystkie moje detektory zdarzeń do znacznika HTML? –

+0

Z wyjątkiem 'onload'. To, jak sądzę, nie zostanie w ogóle wysłane do HTML. – Anurag

+0

Właściwie to jest złe, nie wszystkie zdarzenia dotyczą elementu html. Tak jak zmiana nie będzie miała wpływu na ciało, nie będzie działać również na html. A obciążenie nie działa w oparciu o testy lokalne, ale nie mogę znaleźć żadnej dokumentacji pomocniczej. – Anurag