cur*_*man 3 jquery document document-ready
我们假设我有一个包含javascript文件的HTML页面:
base.js是这样的:
$(document).ready(function () {
obj.init();
}
// ..............
var obj = {...};
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,有时(并非所有时间)Firebug都会在obj.init()通话时向我显示未定义的错误!我的理解是文档就绪意味着所有html元素,包括图像,javascript文件下载和执行(?).
我相信为了找到这个错误的根本原因,我们需要了解"文件就绪"究竟是什么意思?有谁有洞察力?
============================
更新:也许我不应该在这里提到图像,我主要关心的是javascript文件."完全构建DOM"是否包含"所有执行的javascript代码"?
============================
再次更新:似乎人们同意在所有javascript代码下载并执行之前不会触发事件"document.ready".因此,问题的根本原因仍然未知.我将$(document).ready块移动到javascript文件的底部后,我绕过了这个问题.
来自以下文件jQuery.ready():
虽然JavaScript在
load呈现页面时提供执行代码的事件,但在完全接收到所有资产(如图像)之前,不会触发此事件.在大多数情况下,只要完全构造DOM层次结构,就可以运行脚本.传递给的处理程序.ready()保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置.使用依赖于CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素很重要.如果代码依赖于加载的资源(例如,如果需要图像的维度),则应将代码放在
load事件的处理程序中.
| 归档时间: |
|
| 查看次数: |
10247 次 |
| 最近记录: |