JS动态插入脚本并立即执行回调函数的实现

作者:闭包旅人

时间:2026-10-30

浏览:124

本文介绍如何在JavaScript中动态插入JS文件以优化页面加载速度和解决跨域问题。通过监听不同浏览器的事件(如IE的onreadystatechange和Firefox的onload),结合状态判断实现脚本加载完成后的回调函数立即执行,确保代码兼容性与可靠性。

文章目录

动态加载脚本与回调执行概述

本文详细讲解了在JavaScript中动态插入脚本文件并立即执行回调函数的具体实现方案,供读者参考借鉴。

动态插入脚本的核心实现


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="loading">加载中……</div>
<mce:script type="text/JavaScript">
<!--
function loadJs(id,url,callback){
 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.src = url;
 script.id = id;
 script.onload = script.onreadystatechange = function(){
  alert(script.readyState);
  if(script.readyState && script.readyState != 'loaded' && script.readyState != 'complete') return ;
  script.onreadystatechange = script.onload = null
  if(callback) callback();
 }
 document.body.appendChild(script);
}
loadJs('jQuery','jquery.js',function(){$('#loading').html('jquery.js加载完毕')})
// --></mce:script>
</body>
</html>

动态加载的应用价值

动态加载JS文件对于提升页面加载速度以及解决跨域访问问题具有显著作用,上述示例展示了其基本用法。

浏览器兼容性处理

在IE浏览器中,脚本元素支持onreadystatechange事件,但不支持onload事件。

Firefox浏览器则相反,支持onload事件,而不支持onreadystatechange事件。

在IE环境下,loaded或complete状态未必会触发,或者两者可能同时触发,因此建议使用逻辑或进行判断。

属性名大小写注意事项

需注意script.onreadystatechange与script.readyState属性名的大小写敏感性,不区分大小写可能导致难以排查的错误。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述的实现方法能对大家的JavaScript程序设计工作提供帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章