zoukankan      html  css  js  c++  java
  • document.readyState

    只读属性,返回document的加载状态。有三个可能的值

    • loading  仍在加载
    • interactive  文档加载完成,解析完成,但图片、样式表等外部资源可能仍在加载。DOMContentLoaded即将发生
    • complete  文档与所有子资源都完成加载。load事件即将触发

    加载顺序

    document.readystate = 'loading'

    document.readystate变成interactive

    DOMContentLoaded事件触发

    document.readystate变成complete

    load事件触发

    可通过readystatechange事件监听document加载状态

    document.addEventListener('readystatechange', () => console.log(document.readyState));

    带async的脚本在加载完后会立即执行,如果想要保证它在DOMContentLoaded之后执行,可能最开始会想到在脚本中用这种写法:

    document.addEventListener('DOMContentLoaded', () => {
        //代码主体
    })

    但是异步脚本也可能会在DOMContentLoaded事件结束后也就是readystate为complete阶段才下载完,此时添加的DOMContentLoaded事件已经不会触发,所以此脚本将不再执行。

    readystate可以用于解决这种问题,代码如下

    if (document.readyState != 'loading') {
        //代码主体
    } else {
        window.addEventListener("DOMContentLoaded", function () {
            //代码主体
        });
    }
  • 相关阅读:
    (转载)李开复:我在硅谷看到的最前沿科技趋势
    1019. 数字黑洞 (20)
    1018. 锤子剪刀布 (20)
    1017. A除以B (20)
    1016. 部分A+B (15)
    1015. 德才论 (25)
    1013. 数素数 (20)
    1014. 福尔摩斯的约会 (20)
    1012. 数字分类 (20)
    1011. A+B和C (15)
  • 原文地址:https://www.cnblogs.com/lianglanlan/p/14754429.html
Copyright © 2011-2022 走看看