完美解决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与&使用技巧【技巧】