zoukankan      html  css  js  c++  java
  • script标签属性sync和defer

    <script src="a.js" defer></script>
    加了defer属性script标签的页面,运行流程如下:
     
    1.浏览器开始解析HTML页面
     
    2.遇到有defer属性的script标签,浏览器继续往下面解析页面,且会并行下载script标签的外部js文件
     
    3.解析完HTML页面,再执行刚下载的js脚本(在DOMContentLoaded事件触发前执行,即刚刚解析完</html>,且可保证执行顺序就是他们在页面上的先后顺序)
     
    注意事项:
     
    1.内置js代码的script标签,以及动态生成的script标签,defer属性不生效
     
    2.有defer属性的script标签脚本文件里不能使用document.write方法
     
    <script src="a.js" sync></script>
    加了sync属性script标签的页面,运行流程如下:
    1.浏览器开始解析页面
     
    2.遇到有sync属性的script标签,会继续往下解析,并且同时另开进程下载脚本
     
    3.脚本下载完毕,浏览器停止解析,开始执行脚本,执行完毕后继续往下解析
     
    注意事项:
     
    1.无法保证脚本的执行顺序,哪个脚本先下载完毕,就先执行哪个
     
    2.也不能使用document.write方法
     
     
     
    使用场景区分:
     
    1.脚本之间没有依赖关系的,使用sync
     
    2.脚本之间有依赖关系的,使用defer
     
    3.若同时使用sync和defer,defer不起作用,sync生效
  • 相关阅读:
    Django-ORM
    深入理解vue 修饰符sync
    PS切图
    用Chrome 浏览器调试移动端网页 chrome://inspect/#devices
    float浮动导致父元素高度坍塌的原因及清除浮动方法
    vue keep-alive
    ES6 箭头函数
    ES6 Module(模块)
    MVC模式 和 MVVM模式
    移动端适配代码
  • 原文地址:https://www.cnblogs.com/gqymy/p/10473909.html
Copyright © 2011-2022 走看看