js动态引入的四种方法


Posted in Javascript onMay 05, 2018

本文表述了关于js动态引入四种方式的实例代码。分享给大家供大家参考,具体如下:

index.html

<html> 
 <head> 
 <meta content="text/html;charset=utf-8" http-equiv="content-type"> 
 <title> </title> 
 <script src='' id="s1"></script> 
 <script src="dynamic.js"></script> 
 </head> 
 <body> 
 </body> 
</html>

test.js

alert("hello! I am test.js"); 
var str="1";

dynamic.js

//第一种方式:直接document.write 但这样会把当前的页面全覆写掉 
//document.write("<script src='test.js'><\/script>"); 
 
//第二种方式:动态改变已有script的src属性 
//s1.src="test.js" 
 
//第三种方式:动态创建script元素 
/* var oHead = document.getElementsByTagName('HEAD').item(0); 
 var oScript= document.createElement("script"); 
 oScript.type = "text/javascript"; 
 oScript.src="test.js"; 
 oHead.appendChild(oScript); 
*/ 
//其实原理就是利用dom动态的引入一个js到文件中来~就能和原有的js通信了~ 
//alert(str); 
 
/*以上三种方式都采用异步加载机制,也就是加载过程中,页面会往下走, 
如果这样的话会有问题的,如上面的str就访问不到,因为当程序执行alert(str)时,test.js还在加载Ing.... 
那么第四种就是基于ajax请求的,且是推荐
*/ 
function GetHttpRequest() 
{ 
 if ( window.XMLHttpRequest ) // Gecko 
 return new XMLHttpRequest() ; 
 else if ( window.ActiveXObject ) // IE 
 return new ActiveXObject("MsXml2.XmlHttp") ; 
} 
 
function ajaxPage(sId, url){ 
 var oXmlHttp = GetHttpRequest() ; 
 oXmlHttp.onreadystatechange = function() 
 { 
 if (oXmlHttp.readyState == 4) 
 { 
 includeJS( sId, url, oXmlHttp.responseText ); 
 } 
 } 
 oXmlHttp.open('GET', url, false);//同步操作 
 oXmlHttp.send(null); 
} 
 
function includeJS(sId, fileUrl, source) 
{ 
 if ( ( source != null ) && ( !document.getElementById( sId ) ) ){ 
 var oHead = document.getElementsByTagName('HEAD').item(0); 
 var oScript = document.createElement( "script" ); 
 oScript.type = "text/javascript"; 
 oScript.id = sId; 
 oScript.text = source; 
 oHead.appendChild( oScript ); 
 } 
} 
ajaxPage( "scrA", "test.js" ); 
alert( "主页面动态加载JS脚本。"); 
alert( "主页面动态加载a.js并取其中的变量:" + str );

上文所表述的全部内容是js动态引入,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
浅谈JavaScript Array对象
Dec 29 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
javascript断点调试心得分享
Apr 23 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
jquery选择器和属性对象的操作实例分析
Jan 10 jQuery
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 Javascript
关于HTML5的data-*自定义属性的总结
May 05 #Javascript
深入浅析Vue.js计算属性和侦听器
May 05 #Javascript
详解js跨域请求的两种方式,支持post请求
May 05 #Javascript
vue 注册组件的使用详解
May 05 #Javascript
Vue三层嵌套路由的示例代码
May 05 #Javascript
动态加载JavaScript文件的3种方式
May 05 #Javascript
Node.js的Koa实现JWT用户认证方法
May 05 #Javascript
You might like
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
PHP仿盗链代码
2012/06/03 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
跟我学习javascript的定时器
2015/11/19 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
python自动化测试实例解析
2014/09/28 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
UNIX命令速查表
2012/03/10 面试题
培训主管的岗位职责
2013/11/23 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
预备党员政审材料
2014/02/04 职场文书
党支部换届选举方案
2014/05/08 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
学生评语集锦
2015/01/04 职场文书
爱国电影观后感
2015/06/19 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
分家协议书范本
2016/03/22 职场文书
python 对图片进行简单的处理
2021/06/23 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server