动态加载JavaScript的小实践

作者:秦歌 来源:随网之舞 时间:2009-11-12 12:38:00 

动态加载JavaScript文件和CSS资源为Web前端开发提供了巨大的灵活性,同时也实现了lazy load和按需加载,相比XMLHttpRequest而言其没有跨域的限制使其广泛应用。其基本原理是:在页面DOMReady后,利用JavaScript把指定文件路径的script和link元素插入到页面中,然后判断其加载状态再进行继续操作。


YUI的Get就专门提供了一套动态加载的机制,是YUI最基础的功能之一。在YUI中利用Get加载JavaScript和CSS资源会在HTML的head节点中插入如下代码:

<script id="..." type="text/javascript" src="some.js"></script>
<link id="..." type="text/css" rel="stylesheet" href="some.css">

当页面编码和JavaScript或CSS资源编码不一致时,常见的方法是通过charset属性声明其编码,比如页面是gb2312,而资源文件为utf-8,则设置编码后其插入的代码是

<script id="..." type="text/javascript" src="some.js" charset="utf-8"></script>
<link id="..." type="text/css" rel="stylesheet" href="some.css" charset="utf-8">


然而,在IE的一些特殊情况下加载JavaScript时,当你刷新页面时会看到状态栏上有如下的错误提示

当你通过随机参数让JavaScript文件不缓存时,或者让script元素中的charset属性位于src属性之前(比如利用YUI2.8.0之前版本加载)就不会有这个错误提示。所以,这个问题可能是IE的缓存解码机制的bug,也可以看着是YUI的bug(已经提交给YUI开发团队,将在3.1.0中解决)

因此,动态添加script或CSS资源时,把charset放在资源路径前面是最佳实践。对于YUI,暂时可以这样修改源码来修复

标签:加载,动态,JavaScript,yui
0
投稿

猜你喜欢

  • ASP实现全站的301跳转

    2010-03-27 21:45:00
  • HTML邮件的又一点思考

    2009-05-06 13:33:00
  • Oracle 存储过程教程

    2009-10-24 18:05:00
  • ASP也使用ORM,给ASP上所有的SQL注入画上句号

    2011-04-03 11:02:00
  • JS中实现JAVA的hashCode算法

    2008-08-03 17:00:00
  • 怎么样在网页上读取远程xml的数据

    2008-10-10 17:43:00
  • 查找备注(text,ntext)类型字段为空的方法

    2008-08-02 12:47:00
  • 你是真正的用户体验设计者吗? Ⅵ

    2008-04-19 18:23:00
  • SQL Server数据库占用过多内存的解决方法

    2009-10-23 14:02:00
  • SQL Server数据库和Oracle行转列的特殊方案描述

    2010-07-26 15:14:00
  • 一个滑动门菜单例子源码

    2007-12-31 10:16:00
  • 初探MS SQL CE+Codesmith

    2009-05-11 09:03:00
  • SQL语句练习实例之六 人事系统中的缺勤(休假)统计

    2011-11-03 17:15:55
  • 设计"以人为本"和"绿色设计"

    2008-10-07 12:21:00
  • 用实例分析如何整理SQL Server输入数据

    2009-01-20 15:16:00
  • 使用字符串建立查询能加快服务器的解析速度吗?

    2010-07-14 21:03:00
  • 如何提升JavaScript的运行速度(函数篇)

    2010-05-17 13:27:00
  • JavaScript判断各种浏览器类型及版本

    2008-09-29 15:17:00
  • jQuery 1.4 Released 新特性官方诠释

    2010-04-01 12:23:00
  • sqlserver中重复数据值只取一条的sql语句

    2012-06-06 19:46:31
  • asp之家 网络编程 m.aspxhome.com