当前位置:首页 > JavaScript

js实现ready

2026-04-06 08:58:30JavaScript

实现DOM加载完成事件

在JavaScript中检测DOM加载完成有多种方法,以下是常见的实现方式:

使用DOMContentLoaded事件

document.addEventListener('DOMContentLoaded', function() {
    // DOM已完全加载和解析
    console.log('DOM已加载完成');
});

传统ready方法实现

function ready(fn) {
    if (document.readyState !== 'loading') {
        fn();
    } else {
        document.addEventListener('DOMContentLoaded', fn);
    }
}

ready(function() {
    console.log('DOM准备就绪');
});

兼容旧浏览器的方案

function ready(fn) {
    if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading") {
        fn();
    } else {
        document.addEventListener('DOMContentLoaded', fn);
    }
}

jQuery风格的ready实现

(function() {
    var funcs = [];
    var ready = false;

    function handler(e) {
        if (ready) return;
        if (e.type === 'readystatechange' && document.readyState !== 'complete') return;

        for (var i = 0; i < funcs.length; i++) {
            funcs[i].call(document);
        }

        ready = true;
        funcs = null;
    }

    document.addEventListener('DOMContentLoaded', handler);
    document.addEventListener('readystatechange', handler);
    window.addEventListener('load', handler);

    window.ready = function(fn) {
        if (ready) {
            fn.call(document);
        } else {
            funcs.push(fn);
        }
    };
})();

ready(function() {
    console.log('DOM准备就绪');
});

注意事项

DOMContentLoaded事件在HTML文档被完全加载和解析后触发,无需等待样式表、图像和子框架的完成加载。这与window.onload事件不同,后者需要等待所有资源加载完毕。

对于现代浏览器,直接使用DOMContentLoaded事件是最佳选择。如果需要支持非常旧的浏览器(如IE8及以下),可能需要使用readystatechange事件作为备选方案。

js实现ready

以上实现方案可以根据具体需求选择使用,第一种方案最简单直接,最后一种方案最接近jQuery的ready功能实现。

标签: jsready
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…