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 相关文章推荐
Date对象格式化函数代码
Jul 17 Javascript
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jQuery+PHP+Mysql实现抽奖程序
Apr 12 jQuery
vue利用axios来完成数据的交互
Mar 23 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 Javascript
vue data引入本地图片的两种方式小结
Nov 13 Javascript
JS实现烟花爆炸效果
Mar 10 Javascript
如何在JavaScript中等分数组的实现
Dec 13 Javascript
网页图片延时加载的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 mysql数据库操作分页类
2008/06/04 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
django ajax json的实例代码
2018/05/29 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
python脚本定时发送邮件
2020/12/22 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
村主任“四风”问题个人整改措施
2014/10/04 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
redis实现排行榜功能
2021/05/24 Redis
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js