Skip to content

高性能的JavaScript #7

@CarisL

Description

@CarisL

1、带有defer的script标签,只会被下载,代码不会被执行,直到DOM加载完成,下载的时候是不会造成浏览器堵塞,因为会和浏览器的其他资源并行下载
2、任何带有defer的script标签,不论是外联的还是内联的,都不会被执行
3、例子:

<script defer> alert('defer'); </script> <script> alert('script'); </script> <script> window.onload = { alert('load'); } </script>

支持的defer的浏览器打印顺序,script、defer、load,不支持defer的浏览器,defer、script、load,defer会在window.load的前加载。
4、DOM允许JS创建几乎全部HTML标签,script标签也不例外,所以可以动态创建script便签,这样就方便插入、修改等操作,例子:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src='file.js';
document.getElementsByTagName_r('head')[0].appendChlid('script');
5、如果想获取动态script标签的节点事件,可以对script标签监听。
6、IE中还有另一种方式实现,script标签会发出一个readyscriptchange事件,有一个readyState属性,随着下载文件的过程而改变,readyState有五个值:

uninitialzied:默认值
loading:加载中
loaded:加载完成
interactive:下载完上不可用
complete:所有数据都准备好

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions