2015-05-17 7 views
5

Consideriamo il problema dell'acquisizione di mousemove sull'intero documento HTML.Il modo migliore per allegare il listener di eventi all'intero documento html

So quattro oggetti a cui listener di eventi possono essere allegati:

window, document, document.body, document.documentElement

Dopo semplici test mi è sembrato che il collegamento a qualsiasi di loro ha lo stesso effetto.

$(window).on('mousemove', function(){console.log(1)}) 

Mi chiedevo se c'è qualche differenza non so circa

+0

Per quanto ne so, sia 'window' che' document.documentElement' si collegano a 'html' mentre' document.body' si collega a 'body' che non è garantito per coprire l'intera pagina. – Xufox

risposta

3

Ci sono due potenziali issuses con vincolante l'evento per l'oggetto document.body (prestazioni, la compatibilità?):

  • Alcuni browser non consentono l'accesso all'oggetto body prima che il contenuto della pagina sia stato analizzato, pertanto l'associazione dell'evento direttamente nella testa non funzionerà. È necessario associarlo dall'evento load o ready o dal codice all'interno del corpo.

  • In modalità conforme agli standard (HTML 4, XHTML, HTML5) l'elemento del corpo non copre automaticamente l'intera finestra. Sarà grande quanto deve contenere il contenuto e se ha un margine che non è coperto dall'elemento body.

Problemi correlati