Content Loaded Event Adapter
Intent
I want to know when the DOM has loaded, cross-browser, without using browser detection.
I want to subscribe to this as an event through a single point of entry.
Programming by Intent
ContentLoadAdapter = new function(){};
EventPublisher.get(ContentLoadAdapter, "loaded").add(loadHandler);
function loadHandler(e) { alert("loaded"); }
As you can see, there is no code for ContentLoadAdapter. This is exactly how the code started out. I followed Robert Martin's example of Programming by Intent.
Test Case
<-------- the img tags.
Browser Results
| Firefox 2.0 |
IE7 |
Safari 3 |
Opera 9.2 |
| DOMContentLoaded |
poll |
poll |
DOMContentLoaded |
The test was run both with and without a doctype, yeilding the same results in all tested browsers.
Browser Notes
IE
documentElement.doScroll is used in a poll function.
Safari
document.readyState is checked in a poll function.
Strategy
Create a fireOnce function.
1. Attach DOMContentLoaded EventListener, 2. poll readyState, 3. attach
window.onload AOP before advice. For all three, the callBack is fireOnce.
The fallback strategy for DOMContentLoaded not firing is to poll, in order of preference,
documentElement.readyState, then document.readyState.
*Note: When the image is cached, onload will sometimes fire
before the readyState poll is complete. In this case, Safari 3 and IE7 will result in "load".
asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.asdfghjkl;qwertyuiopzxcvbnm,.
Live Test Result:
loading...
|