完美解决JS文件页面加载时的阻塞问题
发布时间 - 2026-01-10 21:54:43 点击率:次关于页面加载时的时间消费,许多书中都做出了介绍,也提出了很多种方法。本文章就详细介绍XHR注入。

概述:JS分拆的方法
1.XHR注入:就是用ajax异步请求同域包含脚本的文件,然后将返回的字符串转化为脚本使用,该方法不会造成页面渲染和onload事件的阻塞,因为是异步处理,推荐使用。
2.iframe注入:加载一个iframe框架,通过使用iframe框架中的脚本来避免src方式加载脚本的阻塞,但是iframe元素开销较大,不推荐。
3.DOM注入:就是创建script元素,通过制定该元素的src并放入DOM树中,根据该语句书写的文字不同,会造成渲染或onload事件的阻塞。
4. document.write方法:在JS脚本中使用document.write('<script>XXX</script>');这种方法简单粗暴,但是它仍然会造成阻塞,所改变的只是什么时候阻塞。
详细介绍:
第一步:创造ajax函数:1建立XMLHTTPRequest或ActiveXObject对象 2.ajax对象的open方法 3.ajax对象的send方法 4.改写onreadystatechange事件,判断status(200)和readyState(4)属性值,对请求数据类型操作。
第二步:用ajax函数请求一个JS文件。
第三步:两个分支:第一种:拿来主义,eval(请求返回字符串);执行了JS中的函数,达到目的。
第二种:创建script对象,利用该对象的text属性赋值 返回字符串 方式,达到目的。
看代码:
实例JS文件:创建一个100X100的黑色div,并加载到指定元素中。
function test() {
oDiv = document.createElement('div');
oDiv.style['width'] = '100px';
oDiv.style['height'] = '100px';
oDiv.style['background'] = 'black';
document.getElementById('header').appendChild(oDiv);
}
test();
页面使用该JS文件
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
*{ margin:0; padding:0;}
</style>
</head>
<body>
<div id="header" style=" height:150px; background-color:Red;"></div>
<div id="init">
<script type="text/javascript">
//Ajax获取字符串
function Ajax(Method,url,funcSucc,funcFalse) {
if (XMLHttpRequest)
var oAjax = new XMLHttpRequest();
else {
var oAjax = new ActiveXObject('Microsoft.XMLHTTP');
}
oAjax.open(Method, url, true);
oAjax.send();
oAjax.onreadystatechange = function () {
if (oAjax.readyState == 4) {
if (oAjax.status == 200) {
var str = oAjax.responseText;
funcSucc(str);
}
else {
funcFalse();
}
}
};
Ajax('GET', 'javascript/load.js', function (str) {
eval(str);
// var oScript = document.createElement('script');
// oScript.text = str;
// document.getElementsByTagName('head')[0].appendChild(oScript);
}, function () {
alert('失败');
});
</script>
</div>
</body>
</html>
以上这篇完美解决JS文件页面加载时的阻塞问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 页面加载
# js阻塞
# JavaScript无阻塞加载和defer、async详解
# 无阻塞加载js
# 防止因js加载不了影响页面显示的问题
# 重写document.write实现无阻塞加载js广告(补充)
# JavaScript中的无阻塞加载性能优化方案
# JavaScript 文件加载与阻塞问题之性能优化案例详解
# 加载
# 给大家
# 详细介绍
# 出了
# 什么时候
# 推荐使用
# 提出了
# 希望能
# 种方法
# 书中
# 这篇
# 转化为
# 都做
# 第二步
# 创建一个
# 第二种
# 小编
# 第一种
# 第三步
# 大家多多
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在Windows环境下新建FTP站点并设置权限?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何用低价快速搭建高质量网站?
如何批量查询域名的建站时间记录?
微信小程序 scroll-view组件实现列表页实例代码
网站页面设计需要考虑到这些问题
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel如何实现API资源集合?(Resource Collection教程)
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
如何在腾讯云服务器快速搭建个人网站?
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
JS实现鼠标移上去显示图片或微信二维码
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
如何在阿里云部署织梦网站?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
重庆市网站制作公司,重庆招聘网站哪个好?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何利用DOS批处理实现定时关机操作详解
Laravel如何配置任务调度?(Cron Job示例)
详解CentOS6.5 安装 MySQL5.1.71的方法
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何选择PHP开源工具快速搭建网站?
如何确认建站备案号应放置的具体位置?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
如何用VPS主机快速搭建个人网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何为不同团队 ID 动态生成多个非值班状态按钮
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何在服务器上配置二级域名建站?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何选择可靠的免备案建站服务器?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
JS去除重复并统计数量的实现方法
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在云虚拟主机上快速搭建个人网站?
如何在万网主机上快速搭建网站?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
如何用AWS免费套餐快速搭建高效网站?
iOS UIView常见属性方法小结
如何快速选择适合个人网站的云服务器配置?
JavaScript Ajax实现异步通信
Linux系统运维自动化项目教程_Ansible批量管理实战
如何快速使用云服务器搭建个人网站?
Linux后台任务运行方法_nohup与&使用技巧【技巧】

