动态加载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
投稿

猜你喜欢

  • 解析xml字符串的函数

    2008-06-10 12:37:00
  • Python中的列表知识点汇总

    2021-06-01 05:00:50
  • asp.net 为FCKeditor开发代码高亮插件实现代码

    2023-09-26 00:30:16
  • javascript的闭包介绍(司徒正美)

    2024-06-05 09:12:21
  • Python StringIO及BytesIO包使用方法解析

    2022-12-24 15:34:26
  • python中如何使用正则表达式的集合字符示例

    2022-05-31 13:00:56
  • MySQL如何利用DCL管理用户和控制权限

    2024-01-14 13:33:21
  • Python configparser模块配置文件过程解析

    2023-03-04 09:35:49
  • 详解django自定义中间件处理

    2023-09-30 08:19:12
  • distinct 多列问题结合group by的解决方法

    2024-01-21 11:18:23
  • Opera Mini 5 网站开发速记

    2010-04-20 16:29:00
  • Python中 传递值 和 传递引用 的区别解析

    2023-12-26 07:05:22
  • 数据库主键的故事

    2008-05-31 07:50:00
  • SQLServer注释快捷键操作

    2024-01-25 20:45:38
  • sql server性能调优 I/O开销的深入解析

    2024-01-19 05:17:57
  • div、section、article 的区别

    2011-02-26 15:39:00
  • 高性能WEB开发 JS、CSS的合并、压缩、缓存管理

    2023-01-02 11:03:26
  • django query模块

    2021-12-01 09:16:22
  • 详解MySQL是如何解决幻读的

    2024-01-14 02:17:19
  • python 将字符串转换成字典dict

    2023-11-27 17:08:33
  • asp之家 网络编程 m.aspxhome.com