关于此SO文章和此SO文章。我注意到我的网络应用程序没有在IE8中启动后看了这些...我不关心目前的向后兼容性,但如果它是一行代码,为什么不呢?无论如何,我遇到的另一个问题是onload事件等待加载所有内容...因此如果用户等待图像下载,则用户无法控制。这让我相信我应该使用
<script type='text/javascript'>my_initialize_function()</script>
放在我希望页面初始化的html中。
并告诉
window.onload = initializePage;
或
window.addEventListener('load',initialize_page);
或任何类似的。
我的问题是:这是初始化一个页面的有效方法吗?
PS:我没有使用包括JQuery在内的任何库......显然我不会尝试初始化尚未加载的元素。
答案 0 :(得分:1)
您可以使用jQuery的$(document).ready()
事件。它在DOM完成后但在加载所有图像之前触发。
答案 1 :(得分:1)
没有
jQuery和类似的库有一个有趣的方法。它们只是以交叉浏览器的方式捕获不同的事件,同时使开发人员更容易使用。
让我们考虑以下代码:
<script> document.getElementById('a').innerHTML='b'; </script>
<div id="a"></div>
可能或可能无效,具体取决于浏览器在找到时是运行javascript还是仅在整个文档构建完成后运行。
另一方面,如果您使用了正确的事件机制,但文档已经已经,那么您的代码将不会被调用。
jQuery 联合两种范例,以获得无缝且更好的系统。像这样:
var foo = {
// holds list of callbacks to call when document starts
stack: [],
// document not ready yet
ready: false,
// add callback to be called when document is ready
add: function(callback){
foo.stack.push(callback);
if(foo.ready)foo.fire(); // document is ready, call fire
},
// fire callbacks (document IS ready)
fire: function(){
for(var i=0; i<foo.stack.length; i++)
foo.stack[i]();
foo.stack = [];
foo.ready = true; // document IS ready
}
};
// bind to browser events
window.onload = foo.fire; // TODO: you should use actual events
// example of use
foo.add(function(){
alert('Document is ready!');
});