首页 新闻 搜索 专区 学院

JavaScript动态加载脚本疑问?

0
悬赏园豆:10 [已解决问题] 解决于 2012-03-07 09:32

刚才看到这篇文章: 里有一段:

动态脚本元素

这是最通用的解决方案,通过DOM 动态地创建<script>元素并插入到文档中,文件在该元素被添加到页面时开始下载,这样 无论在何时启动下载,文件的下载和执行过程不会阻塞页面其他进程。

不过要注意使用这种方式加载的代码会立刻执行,这样需清楚的了解各文件的作用以及合理的执行顺序,此时跟踪并确保脚本下载完成并准备就绪是很有必要的,非IE浏览器会在<script>元素接收完成时触发一个load 事件,而IE 下则会触发一个readystatechange 事件并通过readyState 属性加以判断便可。以下是兼容地动态加载一个JS 脚本的函数:

你可以将这个函数保存至一个load_script.js 文件,然后用该函数来加载其他的脚本,当要加载多个脚本时,为了确保正确的加载顺序,可以将load_script() 的执行串联起来,最后如前面说到的放至页面的底部,这便是比较完美的解决方案了:

<script type="text/javascript" src="load_script.js"></script>
<script type="text/javascript">
load_script(
'file1.js', function() {
load_script(
'file2.js', function() {
load_script(
'file3.js', function() {
//全部载入后的操作...
} );
} );
} );
</script>

这里提供了一个动态加载脚本的方法,但有个疑问就是如果JS中有改变页面dom元素的代码,但页面还没加载完怎么办?会有这样的问题吗?

观海云不远的主页 观海云不远 | 初学一级 | 园豆:89
提问于:2012-03-06 11:28
< >
分享
最佳答案
0

那就写在加载完的后面。

收获园豆:10
悟行 | 专家六级 |园豆:12429 | 2012-03-06 11:31

哦,也就是说用这个方法动态加载JS时要写在</body>前是吧

观海云不远 | 园豆:89 (初学一级) | 2012-03-06 11:39

@路人甲说: 不是的,你不是想先要加载完DOM吗,那就在HTML标签的后面写啊,这样肯定是DOM加载完了,在执行js代码的。

悟行 | 园豆:12429 (专家六级) | 2012-03-06 12:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册