I'm trying to lazy load javascripts, but I can't get it to work reliably. My pages load quite quickly and I want to keep it that way, so I'm not about to use a timeout to delay the loading. Besides document.readyState, how do I ensure the DOM is genuinely ready for modification?
Method I:
poll readyState
createElement script
src = url
appendElement to head
Results:
IE8: always aborts
FF3: loads first time, aborts every other
Chrome: loads first time, aborts every other
开发者_开发百科
Method II: (lazyload included in head tag)
- load with lazyload
Results:
IE8: always aborts
FF3: works
Chrome: loads first time, aborts every other
If you put your <script> tag just above the </body> tag, you could do most things with DOM without it raising any errors, i.e. anything that is above the <script> tag is usually up for modification.
However, if you are looking for a more robust solution, you might have some progress by checking out how the major libraries are detecting if the DOM is ready, here's one for starters (jQuery): http://github.com/jquery/jquery/blob/master/src/core.js#L393
Javascript is hardly usable cross-browsers without a decent framework to help you span the differences. Probably most popular today is jquery, where, per this tutorial, you could use $(document).ready(). In dojo, also quite popular, you could use addOnLoad. And so on... and if you aren't using any framework, you're making life too hard for yourself: do yourself a favor and pick a JS framework you like!-)
加载中,请稍侯......
精彩评论