博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态加载JS文件
阅读量:6035 次
发布时间:2019-06-20

本文共 1921 字,大约阅读时间需要 6 分钟。

hot3.png

仿AJAX的动态加载数据的JS函数,支持回调函数。

function loadjs(url,callback){	var head = document.getElementsByTagName("head")[0];	var script = document.createElement('script');	script.onload = script.onreadystatechange = script.onerror = function (){		if (script && script.readyState && /^(?!(?:loaded|complete)$)/.test(script.readyState)) return;		script.onload = script.onreadystatechange = script.onerror = null;		script.src = '';		script.parentNode.removeChild(script);		script = null;		callback();	}	script.src = url;	try {		head.appendChild(script);	} catch (exp) {}}

基本用法:

loadjs("ajax.php?return=value",function(){alert(value);});

只需要在ajax.php里面输出类似:var value="this is value.";的结果即可,即通过ajax.php来给一个JavaScript变量赋值。在loadjs的第二个参数里面传一个回调函数,这个回调函数可以调ajax.php里面返回的数据。

更多JS函数请看

loadmultijs函数是对loadjs的改装,它可以加载多个JS文件,支持回调函数。当多个JS文件全部加载完毕后再执行回调函数。

function loadjs(url,callback){	var head = document.getElementsByTagName("head")[0];	var script = document.createElement('script');	script.onload = script.onreadystatechange = script.onerror = function (){		if (script && script.readyState && /^(?!(?:loaded|complete)$)/.test(script.readyState)) return;		script.onload = script.onreadystatechange = script.onerror = null;		script.src = '';		script.parentNode.removeChild(script);		script = null;		callback();	}	script.charset = "gb2312";	script.src = url;	try {		head.appendChild(script);	} catch (exp) {}}function loadmultijs(url,callback){	if(Object.prototype.toString.call(url)==='[object Array]'){	//是否数组		this.suc = 0;			//加载计数		this.len = url.length;	//数组长度		var a = this;		for(var i = 0;i < url.length;i++){			loadjs(url[i],function(){ a.suc++; if(a.suc == a.len) try{callback();}catch(e){} });		}	}else if(typeof(url) == 'string'){		loadjs(url,callback);	}}
使用方法:

var url = [		'ajax.php?ajax=1',		'functions.js'	];loadmultijs(url,function(){ alert("加载完毕。"); /* 这里可以调用动态加载的JS文件的数据或方法 */ });

转载于:https://my.oschina.net/mickelfeng/blog/134891

你可能感兴趣的文章
Bacula 7.0.2 发布,备份管理系统
查看>>
asterisk RTP透传相关参数整理
查看>>
第十六次课:Servlet实现商品用户评价
查看>>
Kali Linux Wine32英文字体不显示问题
查看>>
ubuntu ftp服务器配置(转)
查看>>
自动化运维工具SaltStack详细部署
查看>>
7.12 Java-based container configuration (基于java的容器配置)
查看>>
MySQL主从复制、搭建、状态检查、中断排查及备库重做
查看>>
Eclipse快捷键大全
查看>>
VMWare Authorization 服务错误及其重装
查看>>
一位***跟我讲述的故事
查看>>
Flex--水晶按钮
查看>>
学习Struts提供的和Form相关的标签
查看>>
Start Developing iOS Apps Today系列(八)
查看>>
2016.1.13 随笔
查看>>
Java-POI读取Excel简单案例
查看>>
RHEL 5.x 平台 10G RAC 的快速安装脚本
查看>>
我的Python 学习之旅 从0开始的小白
查看>>
会声会影简易相册制作教程
查看>>
火车座次小知识
查看>>