`

js 初始化装载方法

 
阅读更多

 

JS 的初始化装载, onload 是最坏的选择,  因为 onload 不是在 document 加载完成的时候调用的, 而是在页面所有元素 (包括图片等) 全部加载完成才会调用. 也就是说, 如果你的页面上有个尺寸很大的图片, 下载需要很长时间, 那么你的脚本就一直不能被初始化, 直到图片装载完成, 严重影响用户体验.

在 W3C 中有个叫 DOMContentLoaded 的事件, 故名思意, 它会在 DOM (文档对象模型) 被加载完成的时候触发. 那么我们就可以通过 document.addEventListener("DOMContentLoaded", init, false)  方法调用初始化脚本的方法了.

但现在很多浏览器并不支持 DOMContentLoaded 事件,可以用以下方法进行处理.

// 如果支持 W3C DOM2, 则使用 W3C 方法
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", init, false);
 
// 如果是 IE 浏览器(不支持)
} else if (/MSIE/i.test(navigator.userAgent)) {
	// 创建一个 script 标签, 该标签有 defer 属性, 当 document 加载完毕时才会被载入
	document.write('<script id="__ie_onload" defer src="javascript:void(0)"></script>');
	var script = document.getElementById("__ie_onload");
	// 如果文档确实装载完毕, 调用初始化方法
	script.onreadystatechange = function() {
		if (this.readyState == 'complete') {
			init();
		}
	}
 
// 如果是 Safari 浏览器(不支持)
} else if (/WebKit/i.test(navigator.userAgent)) {
	// 创建定时器, 每 0.01 秒检验一次, 如果文档装载完毕则调用初始化方法
	var _timer = setInterval( function() {
		if (/loaded|complete/.test(document.readyState)) {
			clearInterval(_timer);
			init();
		}
	}, 10);
 
// 如果以上皆不是, 使用最坏的方法 (本例中, Opera 7 将会跑到这里来)
} else {
	window.onload = function(e) {
		init();
	}
}
 

 

分享到:
评论

相关推荐

    基于threejs实现室内模型的动态装载源码(智慧楼宇).zip

    这种方法可以显著减少页面初始化时的负担,让用户更快地看到初步的3D场景,同时在后台继续加载其他内容,实现平滑的过渡效果。 【getModelBase】: 在压缩包中的“getModelBase”可能是用于获取基础模型或基础数据...

    浅谈页面装载js及性能分析方法

    页面装载JavaScript (JS) 是网页加载过程中的一个重要阶段,它涉及到将JS文件下载到客户端并执行。性能分析则是在开发过程中对代码执行效率进行评估,确保页面的快速响应和流畅运行。下面,我们将详细探讨页面装载JS...

    前端大厂最新面试题-new_vue.docx

    在构造函数中,我们可以看到 `_init` 方法,该方法是 Vue 实例的核心初始化方法。在这个方法中,Vue 框架会执行一系列初始化操作,包括: 1. 生成唯一的 `uid`; 2. 设置 `_isVue` 标志位,以标识当前实例是否为 ...

    学习ReactNative的一个初始的项目运用基本控件加载网络数据并显示

    6. **生命周期方法**:React组件有特定的生命周期方法,如`componentDidMount`,在这个方法中通常会发起网络请求,`componentDidUpdate`则用于处理数据更新后的UI刷新。 7. **错误边界**:为了捕获和处理运行时错误...

    [原创]基于FLASH机制实现的不同域窗口相互调用js的插件-虫洞

    6)静态类的初始化方法中,对于FLASH插件的载入采用了第三方资源:SWFObject类提供的方法,可根据浏览器的不同而进行不同的装载方式。在Wormhole.js脚本文件中,有大部分代码是SWFObject 1.5版源码压缩后的COPY.感谢...

    bootstrap-JsTree

    3. **初始化JsTree**:使用JavaScript或者jQuery调用JsTree的初始化方法,配置所需的插件、设置和数据源。 4. **监听事件**:根据需求绑定JsTree的事件,如`select_node`、`create_node`等,以便在用户操作时响应。 ...

    11.如何在列表框中自动装载磁盘文件列表?.

    在这个例子中,我们初始化了一个`MainForm`类,并在构造函数中调用了`LoadDiskFilesToListBox`方法。该方法遍历C盘的所有文件和目录,并将它们添加到名为`listBox1`的列表框中。 此外,对于Web开发,例如在...

    车身装载机:ThreeJS-GLTF车身装载机

    2. 创建WebGL渲染器:初始化一个WebGL渲染器,它负责在浏览器中绘制3D图像。 3. 创建场景:创建一个Three.js的Scene对象,所有3D对象都将添加到这个场景中。 4. 创建相机:设置一个Camera对象,定义观察3D世界的视角...

    基于XML在Unity3D中数据传递的应用研究.pdf

    XML初始化装载过程可以使用Visual Basic语言来实现,定义一个XML初始化装载过程,清除树视图,加载XML文件,并将其传递到Unity3D场景中。 知识点7:数据存放变量的属性 数据存放变量的属性包括ID、test_name、test...

    很酷的javascript输入列表框

    这降低了页面初始化时的负担,提高了用户体验,尤其是在处理大量数据时。 3. **支持XML数据源**: 列表框可以利用XML文件作为数据源,XML提供了一种结构化存储数据的方式,便于程序解析和展示。通过XML,开发者...

    联动DropDownList等源码

    * 0 (未初始化) 200 –(OK) * 1 (正在装载) * 2 (装载完毕) * 3 (交互中) * 4 (完成) 2. Session read in ashx 使用场景 ashx file and so on 注意事项 继承IReadOnlySessionState 引用System.Web.Session...

    如何异步装载大图像文件.rar

    对于大图像文件,这意味着当图像进入视口(用户可视区域)时才开始下载,而不是在页面初始化时一次性加载所有图像。这种方法可以降低首屏加载时间,提高页面加载速度。 二、HTML与数据URL 一种简单的异步加载方法是...

    layui+nicePage.js实现JSON自动表格分页代码.zip

    1. 初始化layui表格:使用layui的table模块初始化表格,定义列名、宽度等,并指定数据接口。例如: ```javascript layui.use('table', function(){ var table = layui.table; //渲染表格 table.render({ ...

    init-file-loader:这是我们将在动词和汇编的初始化插件中使用的默认加载器

    初始化文件加载器 模板加载器,用于将文件加载到乙烯基插件内的自定义视图集合。使用安装npm i init-file-loader --save用法注册加载器将init-file-loader注册为自定义加载器: app . loader ( 'file' , [ require ...

    DropDownList 二级联动Select示例代码

     * 0 (未初始化) 200 –(OK)  * 1 (正在装载)  * 2 (装载完毕)  * 3 (交互中)  * 4 (完成)    2. Session read in ashx  使用场景  ashx file and so on  注意事项  继承IReadOnlySessionState ...

    JSP的生命周期

    - **方法调用**:可以定义一个初始化方法,该方法会在每次页面实例创建后立即自动调用。 ##### 3. 请求处理 一旦初始化完成,JSP页面就可以开始处理客户端的请求了。 - **响应生成**:JSP页面根据客户端的请求生成...

    ajax(jquery)学习二.1 装载

    - **prototype.init**: 初始化验证器实例的方法。 ### 实际应用案例 假设我们有一个简单的注册表单,其中包含用户名、电子邮件和密码字段。我们可以使用 jQuery 验证插件来确保所有必需的字段都已填写,并且电子...

    jsoneditor 后台管理展示Json数据的专用模板 (html + js +css)

    - 使用JavaScript初始化JSONEditor,指定容器元素,并加载初始的JSON数据。 - 监听编辑器的事件,比如数据改变时,可以触发保存操作,将更改发送回后端服务器。 6. **API和功能**: JSONEditor通常提供丰富的API...

    解析页面加载与js函数的执行 onload or ready

    7. JS的初始化装载。在此之后,JavaScript开始初始化,执行各种初始化任务。 在JavaScript函数的执行时机上,主要分为两种方式,即使用onload和ready。 onload事件: onload事件会在页面的所有资源(包括图片、...

Global site tag (gtag.js) - Google Analytics