在JavaScript中,我们可以使用window.onload
或<body onload="myOnloadFunc();">
来触发页面加载完成的事件。虽然它们都可以实现同样的功能,但它们之间存在一些差异。
使用window.onload
是比较不侵入性的方式,它将JavaScript代码从HTML中分离出来。这种方式适用于常见的JavaScript库,如Prototype、ExtJS、Dojo、JQuery和YUI等。这些库都提供了事件包装器,可以在文档加载期间监听事件并做出相应的反应。
然而,需要注意的是,这两种方式之间存在一些区别。使用内联的onload
事件将在全局上下文中调用myOnloadFunc()
函数(this
将引用window
)。而通过JavaScript设置onload
事件将在元素的上下文中执行函数(this
将引用触发事件的元素)。在特定情况下,这可能不会有影响,但在其他情况下会有所区别。
解决这个问题的方法之一是使用JavaScript库来更改上下文绑定。通过库中的方法,可以覆盖this
引用的对象。另一种方法是使用.bind()
方法来改变上下文绑定。但需要注意的是,使用.bind()
方法需要支持MSIE9+,而在旧版的MSIE中,可能需要使用polyfill来实现相同的功能。
总之,无论是使用window.onload
还是<body onload="myOnloadFunc();">
,都可以实现页面加载完成的事件。选择哪种方式取决于具体的需求和开发环境。
在这个问题中,window.onload和
这两种方式没有区别,但是都不建议使用。在许多浏览器中,window.onload事件直到所有图片加载完成才会触发,这不是我们想要的。标准化的浏览器有一个叫做DOMContentLoaded的事件,在图片加载之前触发,但是IE浏览器不支持(在写这个答案时)。我建议使用一个支持跨浏览器的DOMContentLoaded功能的javascript库,或者找到一个写得很好的函数来使用。jQuery的$(document).ready()就是一个很好的例子。
未来的问题...如果没有jQuery怎么办?
现在的问题...如果对于手头的项目来说,jQuery太重了怎么办?(不是说jQuery不好,我自己也使用它。只是有时候只想要库中的一个功能..)
当你说"IE不支持"是普遍的真相还是只针对特定版本的IE?由于浏览器世界已经发生了很多变化,自从你写这个答案以来,也许是时候更新这个答案了?
DOMContentLoaded现在被IE9及以上版本支持:developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
我知道这是老问题了,但是我不知道怎么找到它。我使用过DomReady.js,似乎工作得很好。不确定他们是否已经迁移到github:code.google.com/p/domready
未来的报告,所有主要浏览器现在都支持DOMContentLoaded:caniuse.com/#feat=domcontentloaded
所以说"没有jQuery"是不可能的,因为它当前存在。你总是可以自己主机托管它。并且jcampbell1你怎么知道这不是楼主想要的?jQuery对于一些功能来说是多余的,而且你可以使用原生的JS实现所有能用jQuery实现的功能。
window.onload是一个JavaScript事件,当整个页面及其依赖的资源都加载完成后触发。它可以在页面中的任何位置使用,甚至在没有
标签的情况下也可以工作。然而,根据HTML标准来说,在实际添加内容(应该放在
标签中)时,没有标签的HTML是无效的。因此,不应该依赖浏览器来修复非标准的代码。在XHTML中,标签必须包含
和标签。而在HTML4中,标签的开始和结束标签都是可选的。因此,如果想要编码为HTML4,可以省略标签。需要注意的是,在HTML5中,不再需要指定脚本类型(如果是JavaScript),因为它默认为JavaScript。
为了确保代码的兼容性和标准性,应该按照HTML规范,在
标签中使用window.onload事件,并在