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 相关文章推荐
DOM 中的事件处理介绍
Jan 18 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
Ant design vue中的联动选择取消操作
Oct 31 Javascript
如何在 Vue 表单中处理图片
Jan 26 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
第十三节--对象串行化
2006/11/16 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
Prototype Selector对象学习
2009/07/23 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
SVG实现时钟效果
2018/07/17 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python生成随机MAC地址
2015/03/10 Python
低版本中Python除法运算小技巧
2015/04/05 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
Python多线程正确用法实例解析
2020/05/30 Python
python如何使用代码运行助手
2020/07/03 Python
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
实习教师自我鉴定
2013/12/12 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android