美文网首页
js加载与执行

js加载与执行

作者: YellowPoint | 来源:发表于2019-06-18 15:41 被阅读0次
  1. JavaScript采用单线程,是为了避免在执行过程中页面内容被不可预知的重复修改
  2. 由于JavaScript的阻塞特性,在每一个<script>出现的时候,无论是内嵌还是外链的方式,它都会让页面等待脚本的加载解析和执行
  3. 带defer属性的<script>标签在DOM完成加载之前都不会去执行,无论是内嵌还是外链方式。
<script src="index.js" defer ></script> 
<script src="index.js" async ></script> 
  1. async需要加载完成后就会自动执行代码,但是defer需要等待页面加载完成后才会执行。
  2. defer,文档完成解析后,触发 DOMContentLoaded 事件前执行
结合DOM文档加载的加载步骤,DOMContentLoaded事件/Load事件,触发时机如下:
1、解析HTML结构。
2、加载外部脚本和样式表文件。
3、解析并执行脚本代码。// 部分脚本会阻塞页面的加载
4、DOM树构建完成。//DOMContentLoaded 事件
5、加载图片等外部文件。
6、页面加载完毕。//load 事件
https://www.jianshu.com/p/ca8dae435a2c
  1. 动态添加脚本元素:论这段脚本是在何时启动下载,它的下载和执行过程都不会阻塞页面的其他进程
    1. 通过这种方式下载文件后,代码就会自动执行。但是在现代浏览器中,这段脚本会等待所有动态节点加载完成后再执行。
    2. 是在onLoad之后在执行?还是其他的js执行完之后;
    3. chrome测试发现,会在其他js执行完之后再执行动态添加的js;所以才加载完成的事件来方便执行完一个再执行下一个
  2. 在 DOM 中动态执行脚本
    1. 与内联脚本不同的是,外部脚本的插入是异步的不会阻塞 DOM 解析或者渲染;这意味着动态插入一个外部脚本后不可立即使用其内容,需要等待加载完毕。

相关文章

  • js的加载顺序

    先加载执行a.js,完毕后再加载执行b.js。 先执行a.js,完毕后再执行b.js。 这就不可以确定谁先执行了,...

  • js加载与执行

    JavaScript采用单线程,是为了避免在执行过程中页面内容被不可预知的重复修改。 由于JavaScript的阻...

  • async和defer的具体作用和使用场景。

    async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。 defer,加载...

  • 浏览器性能提升--js加载优化

    动态加载js脚本函数封装优点:js代码加载不阻塞浏览器其他的执行

  • js加载执行

    js性能--加载执行 [TOC] 加载脚本的方式 脚本位置 HTML4规范指出,< script >标签可放在< ...

  • 一文读懂 css js 阻塞问题

    前言 先抛出几个问题: css 加载会不会阻塞 js 的加载?(不会) css 加载会不会阻塞 js 的执行?(会...

  • script的async和defer属性

    当没有async和defer属性时,浏览器会立即加载并执行script中的js,等js执行完成之才会加载html;...

  • 页面图片加载显示完再执行其他js

    页面图片加载显示完再执行其他js

  • 01-JQuery入口函数

    JQuery入口函数 JS原生入口函数特点原生JS会等到DOM元素加载完毕,并且图片也加载完毕才会执行原生的JS如...

  • JavaScript补充

    01-延迟和异步加载JS 如何延迟加载JS:defer defer:js脚本可以延迟到文档完全被解析后执行 如何异...

网友评论

      本文标题:js加载与执行

      本文链接:https://www.haomeiwen.com/subject/ksbfqctx.html