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 相关文章推荐
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
vue 设置路由的登录权限的方法
Jul 03 Javascript
express 项目分层实践详解
Dec 10 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 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
收音机的保养
2021/03/01 无线电
PHP在线书签系统分享
2016/01/04 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Python基于百度云文字识别API
2018/12/13 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
python实现简单遗传算法
2020/09/18 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
高中生校园生活自我评价
2013/09/19 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
网站客服岗位职责
2014/04/05 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL