JavaScript的加载和执行

总结:

在</body>闭合之前,将所有的<script>标签放到页面底部.这样能确保在脚本执行之前页面已经完成渲染.

合并脚本, 页面中的<script>标签越少, 加载速度越快,响应也迅速.

无阻塞下载javaScript的方法,见下面

1. 脚本位置,组织脚本&

由于脚本会阻塞页面其他资源的下载,推荐所有的<script>标签尽可能放在<body>标签的底部,以尽量减小对整个页面下载的影响

  例如:<body><script type="" src="1.js&2.js&3.js"></script></body>

2. 无阻塞脚本

window对象的load事件触发后再下载脚本

1)  延迟的脚本defer

<script type="" src="1.js" defer></script>因带defer可以放在文件的任何位置,解析到script标签的时候开始下载,但不会执行,直到DOM加载完成之后, 或者在onload之前被调用

Defer:指明本元素所含的脚本不会修改DOM,因此代码能安全地延迟执行.(仅支持IE4+, Firefox 3.5+)

2) 脚本动态元素

(1) var script = document.createElement(‘script‘);

script.type = ‘text/javascript‘;

script.src = ‘file.js‘;

document.getElementsByTagName(‘head‘)[0].appendChild(script);

文件在该元素被添加到页面时开始下载. 无论何时下载,下载和执行都不会被阻塞页面其他进程(Firefox和Opera会等待此前所有动态脚本执行完)

(2) readyState(uninitiated初始状态, loading开始下载, loaded下载完成, interactive数据完成下载但尚不可用, complete所有数据已准备就绪)

3) XMLHttpRequest脚本注入, 获取脚本并注入到页面中.

4) LazyLoad类库

   <script type="text/javascript" src="lazyload_min.js"></script>

<script type="text/javascript" src="file.js">

LazyLoad.js([‘first.js‘, ‘last.js‘], function(){

      Appliction.init();

    });

</script>

时间: 2024-12-21 06:15:28

JavaScript的加载和执行的相关文章

浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入

在<浏览器环境下JavaScript脚本加载与执行探析之defer与async特性>中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机.浏览器支持情况.浏览器bug以及其他的细节问题.而除了defer和async特性,动态脚本和Ajax脚本注入也是两种常用的创建无阻塞脚本的方法.总的来看,这两种方法都能达到脚本加载不影响页面解析和渲染的作用,但是在不同的浏览器中,这两种技术所创建的脚本的执行时机还是有一定差异,今天我们再来探讨一下通过动态脚本技术和Ajax注入的脚本在这些方

浏览器中Javascript的加载和执行

在刚学习Javascript时曾对该问题在小组内做个一次StudyReport,发现其中的基础还是值得分析的. 从标题分析,可以加个Javascript的加载和执行分为两个阶段:加载.执行.而加载即浏览器下载JS脚本的过程,执行时浏览器JS引擎解释执行的过程. 接下来先分析JS脚本加载的过程,加载方式可分为同步加载和异步加载. 同步加载即浏览器加载JS过程中停止对HTML元素的解析,保证JS执行的安全一致性,但如果JS中包含大量计算时,会导致阻塞页面的渲染.常见的JS加载是通过<script>

javascript页面加载完执行事件

<script type="text/javascript" language="JavaScript"> //: 判断网页是否加载完成 document.onreadystatechange = function () { if(document.readyState=="complete") { alert('ok'); } } </script> javascript页面加载完执行事件

浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析.渲染以及其他资源的下载都要停下来等待脚本执行完毕①.这一点是没有争议的,并且在所有浏览器中的行为都是一致的,原因也不难理解:浏览器需要一个稳定的DOM结构,而JavaScript可能会修改DOM(改变DOM结构或修改某个

如何加快JavaScript的加载与执行

JS 有个很无语的阻塞特性,就是当浏览器在执行JS 代码时,不能同时做其他任何事情,无论其代码是内嵌的还是外部的. 浏览器在碰到一个引入外部JS 文件的<script>标签时会停下所有工作来下载并解析执行它,在这个过程中,页面渲染和用户交互完全被阻塞了,为了避免页面加载时的停顿甚至空白页的出现,JS 脚本应尽量放置在页面底部,这点很重要:兰西县璩家摄影 <html> <head> <title>无标题文档</title> <link rel

高性能JavaScript(加载和执行)

当浏览器遇到 <script> 标签时,它是没办法知道 JavaScript 是否会向DOM中添加内容或引入其他元素,甚至关闭某一个标签.因此这个时候浏览器就会停止处理页面,先执行JavaScript代码,然后再继续解析和渲染页面. 改善 将<script>标签放到 <body>的底部,尽量减少对整个页面下载的影响. 减少<script>标签的数量,不仅仅是外链脚本,内嵌的脚本数量同样也要限制.(合并) 无阻塞脚本 无阻塞脚本的秘诀在于,在页面加载完成后才加

JavaScript 的性能优化:加载和执行

随着 Web2.0 技术的不断推广,越来越多的应用使用 JavaScript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情.本文详细介绍了如何正确的加载和执行 JavaScript 代码,从而提高其在浏览器中的性能. 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必

怎么样加快JavaScript加载和执行效率

概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或 JavaScript 的命名空间,它们对后面页面内容造成影响.一个典型的例子就是在页面中使用document.write(). JavaScript 代码内嵌示例 <html> <head> <title>Source

加快JavaScript加载和执行效率

JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情.本文详细介绍了如何正确的加载和执行 JavaScript 代码,从而提高其在浏览器中的性能. 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器