js 文件引入实现代码


Posted in Javascript onApril 23, 2010

也不好麻烦让他们从新写一个方法,由于他们都引用了这个AA.js文件,想在这边在AA.js后执行一个函数自动把jq库引入,于是想到引入js文件方法:

getScript : function(s,call){ 
var el = UI.DC('script'); 
        if (call) { 
            el.onload =el.onreadystatechange=call; 
        } 
        UI.A(el,'type','text/javascript'); 
        UI.A(el,'src',s); 
        UI.GT(document,'head')[0].appendChild(el); 
    } 
/*UI.DC为创建对象,UI.A为属性赋值,GT为getElementsByTagName的简写*/

于是这样执行UI.getScript("js/jquery/jquery-1.4.2.min.js",function(){alert("载入成功")});

结果在IE和ff下确实弹出了载入成功,可当我再HTML中使用jq的时候在IE下怎么都执行不了,不断刷新偶尔还能执行,放在服务器上和在客户端的静态页面也有差别,但在火狐下没有问题.........

于是想到是不是jq文件在载入的时候和html载入是并行的,当jq载入成功之前HTML文件已经执行,于是在html的body结束之时添加

<script> 
alert("html前执行") 
</script>

执行发现确实是先弹出hmtl前执行,后弹出载入成功。在火狐下也是这样。上传到服务器上时感觉火狐的弹出会同时出现.....

于是开始不解,到底怎么设置才能确保jq文件载入完之后才能执行html body中的东东,怎么像在head中添加<script type="text/javascript" src="js/jquery.js"></script>那样引入文件..
思索总想到以前浏览一个页面是他用了一个loading文件引入许多js文件,在html中就可使用这些引入的文件函数,搜索查到了这个js文件内容为:

var Collapsar = { 
Version: '0.0.1', 
require: function(libraryName) { 
// inserting via DOM fails in Safari 2.0, so brute force approach 
document.write('<script type="text/javascript" src="'+libraryName+'"></script>'); 
}, 
load: function() { 
if((typeof Prototype=='undefined') || 
(typeof Element == 'undefined') || 
(typeof Element.Methods=='undefined') || 
parseFloat(Prototype.Version.split(".")[0] + "." + 
Prototype.Version.split(".")[1]) < 1.5) 
throw("The Prototype JavaScript framework 1.5.0+ is required"); $A(document.getElementsByTagName("script")).findAll( function(s) { 
return (s.src && s.src.match(/loader\.js(\?.*)?$/)) 
}).each( function(s) { 
var path = s.src.replace(/loader\.js(\?.*)?$/,''); 
var includes = s.src.match(/\?.*load=([a-z,]*)/); 
(includes ? includes[1] : "").split(',').each( 
function(include) { 
Collapsar.require(path+include+'.js') }); 
}); 
} 
} 
Collapsar.load();

调用的时候为<script type="text/javascript" src="js/loder.js?load=jquery,...,..."></script>这样等号后面的文件都可引入,其实是这句在关键的作用 document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
刚看到有些疑惑write方法不是像文档内添加内容吗,内容应该在body标签中出现啊,实验发现如果是字符串确实出现在文档内,当如是script link等标签就出现在了head内;那在head中添加引用js文件难道和直接在head中一样载入他们之后才执行body中的内容....他载入和上面添加script有什么区别啊........

实验:在AA.js中添加:

UI.getsc=(function(){
document.write('<script type="text/javascript" src="js/jquery/jquery-1.4.2.min.js"></script>');
})()

让他自动执行,在body的第一行就引入jq的方法,实验确实成功了,在IE和在ff一样都可执行;
有时间继续实验...................

Javascript 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
jQuery :nth-child前有无空格的区别分析
Jul 11 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
Nov 30 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
Node.js中DNS模块学习总结
Feb 28 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
网页图片延时加载的js代码
Apr 22 #Javascript
基于jQuery的表格操作插件
Apr 22 #Javascript
JQuery实现的在新窗口打开链接的方法小结
Apr 22 #Javascript
JQuery 技巧和窍门整理(8个)
Apr 22 #Javascript
超级酷和最实用的jQuery实例收集(20个)
Apr 21 #Javascript
基于jquery的超简单上下翻
Apr 20 #Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 #Javascript
You might like
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
理论讲解python多进程并发编程
2018/02/09 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
python中元组的用法整理
2020/06/15 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
护士自荐信怎么写
2013/10/18 职场文书
材料采购员岗位职责
2013/12/17 职场文书
社会保险接收函
2014/01/12 职场文书
关于逃课的检讨书
2014/01/23 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
redis protocol通信协议及使用详解
2022/07/15 Redis