Mozilla: window.onload reflects body[onload] as an EventListener html.onload reflects html[onload] as an EventListener (!) event handling path is: handler body[onload] target window (capture listener) target window (bubble listener) IE: window.onload reflects body[onload] as an EventListener (html.onload reflects html[onload] as a DOMString) body.onload reflects body[onload] as an EventListener event handling path is: handler body[onload] Opera: html.onload reflects html[onload] as an EventListener (!) body.onload reflects body[onload] as an EventListener event handling path is: capture window (currentTarget == document) capture document capture html handler body[onload] target body (bubble listener) target window (bubble listener) (currentTarget == document) target document (bubble listener) Webkit TOT: window.onload reflects body[onload] as an EventListener document.onload, html.onload, body.onload exist but do nothing (!) event handling path is: handler body[onload] phase 0 window (bubble listener) (currentTarget == null) Safari: window.onload reflects body[onload] as an EventListener document.onload, html.onload, body.onload exist but do nothing (!) event handling path is: capture document capture html target body (capture handler) handler body.onload target body handler body[onload] phase 0 window (capture listener) (currentTarget == null) phase 0 window (bubble listener) (currentTarget == null)