keys
V2EX  ›  问与答

JS问题:为什么同样是<script>标签,硬编码的会阻塞页面内容加载,动态加载的却可以并发加载?

  •  
  •   keys · Sep 3, 2012 · 3997 views
    This topic created in 5176 days ago, the information mentioned may be changed or developed.
    6 replies  •  1970-01-01 08:00:00 +08:00
    SAGAN
    SAGAN
    Sep 3, 2012
    1
    你硬编码时加个async="async"也能异步加载了
    keys
    keys
    OP
    Sep 3, 2012
    2
    @SAGAN 这几天google了很多无阻塞加载js的东西,大家都只是说了这种方法,没看到谁解释为什么浏览器的行为会不同,我是疑惑这点不是找别的方法
    reorx
    reorx
    Sep 3, 2012
    3
    觉得楼主提出的是2个不相干的问题呢。

    script 标签在大多数现代浏览器中都是并发加载的,硬编码也不例外。

    script 阻塞页面内容的加载,是既定的规范。虽然没有见到过有关的说明,个人认为,是由于 javascript 的执行可能对页面的内容造成改变,因此必须等 script 标签加载完成后才能继续页面的加载。
    skydiver
    skydiver
    Sep 3, 2012
    4
    参考:高性能网站建设指南——前端工程师技能精髓 http://book.douban.com/subject/3132277/
    keys
    keys
    OP
    Sep 3, 2012
    5
    @reorx 我表达有误吧,我用firebug查看的时候,很奇怪为什么动态加载的script标签没有阻塞?这才是我想问的
    SAGAN
    SAGAN
    Sep 3, 2012❤️1
    6
    动态加载的script默认异步.

    "Script-inserted script elements now have async default to true, which can be set to false to make the scripts execute in insertion order."

    http://www.w3.org/TR/html5-diff/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1531 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.