当前位置:首页 > JavaScript

js实现ready

2026-04-06 08:58:30JavaScript

实现DOM加载完成事件

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

使用DOMContentLoaded事件

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

传统ready方法实现

js实现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实现

js实现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事件作为备选方案。

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

标签: jsready
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…