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实现页面打印的三种方法
Mar 05 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
vue元素实现动画过渡效果
Jul 01 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
Jun 29 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 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处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php实现的漂亮分页方法
2014/04/17 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php中的动态调用实例分析
2015/01/07 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python解析json实例方法
2013/11/19 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
党小组意见范文
2015/06/08 职场文书
Oracle 多表查询基本语法实例
2022/04/18 Oracle