java动态加载js_动态加载JavaSript

在许多情况下,需要使用动态插入脚本的方式

1. 跨域访问:不同域下的脚本不能够通过该AJAX方式直接获得

2.延迟加载或预加载:由于浏览器会等所有外链脚本加载完才开始解析。为了提高用户响应速度和用户体验

应该让那些暂时不用的脚本延迟加载。另外在欢迎页面中可以使用预加载的方式先将以后要用到的脚本下载到本地。

3.灵活条件加载: 许多脚本需要根据用户的环境或者用户的行为条件加载一些脚本。

4. 加载顺序逻辑: 有些脚本之间加载顺序必须按照严格的顺序。此时使用动态加载的方式更好的控制这种逻辑。

5.提高并发速度:大部分浏览器都会对脚本加载线程数量加以控制,而使用动态加载的方式能够增加并发下载数量。

5. XHR方式动态加载能够提高动态脚本的解析性能。

使用插入script标签的方式动态加载脚本

function loadJS(url, func){

var head=document.getElementsByTagName('head').item(0);

var script=document.createElement('script');

script.src=url;

script.type='text/javascript';

script.defer=true;

script.onload = func;

void(head.appendChild(script));

}

//顺序加载JS,按照js_arr数组给定的顺序加载js文件

function squenceLoad(js_arr){

var uid = $_GET("uid");

//内部函数可共享闭包中的作用域,可以共享 js_arr数组

var callback = function(){

var url = js_arr.shift();

if(url){ loadJS(url, callback);  }

}

//间接递归方式调用 loadJS , callback

loadJS(js_arr.shift(), callback);

}

//调用顺序加载的例子

document.onload = function(){

var js_arr =["p.php?uid=0 ","p.php?uid=1","p.php?uid=2","p.php?uid=3"];//JS 加载链

squenceLoad(js_arr);

}

//XHR脚本注入方式异步执行脚本

// 原理是通过修改

而且要比前面介绍的方法更为灵活。脚本的内容可以是 拼接的语句,也可以是ajax获得的内容

function XHR( data){

var head=document.getElementsByTagName('head').item(0);

var script=document.createElement('script');

script.text=data;

void(head.appendChild(script));

}

///eval方式动态执行脚本的方式, 使用eval解析脚本的限制很多,首先复杂语句必须是括号包含的结构。同时eval的执行与执行的上下文也有关系。而且eval的效率较低。不过这种方法是ajax中动态获得数据的最常用的方式。

function execute(data){

window.eval("("+data+")");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值