javascript - 如何在没有 jQuery 的情况下检测 DOM 是否就绪并添加类?

标签 javascript jquery

我想在不使用 jQuery 的情况下重写这一行,以便可以更快地应用它(并且在下载 jQuery 库之前)。这条线是...

$(document).ready(function() { $('body').addClass('javascript'); });

如果我将其添加到 html 元素中,我可以省略 DOM 就绪部分吗?但这样做的一个问题是验证器不喜欢 html 元素上的 class 属性,即使它是用 JS 插入的。

那么,如果没有 jQuery,我该如何重写呢?

最佳答案

如果你想重现 jQuery 的 document.ready 事件,你可以使用 onreadystatechangeDOMContentLoaded适用的事件:

function domReady () {
  document.body.className += " javascript";
  // ...
}

// Mozilla, Opera, Webkit 
if ( document.addEventListener ) {
  document.addEventListener( "DOMContentLoaded", function(){
    document.removeEventListener( "DOMContentLoaded", arguments.callee, false);
    domReady();
  }, false );

// If IE event model is used
} else if ( document.attachEvent ) {
  // ensure firing before onload
  document.attachEvent("onreadystatechange", function(){
    if ( document.readyState === "complete" ) {
      document.detachEvent( "onreadystatechange", arguments.callee );
      domReady();
    }
  });
}

关于javascript - 如何在没有 jQuery 的情况下检测 DOM 是否就绪并添加类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795089/

相关文章:

javascript - 为什么这个 javascript 根本不起作用?

javascript - ReplaceWith() 不返回标签

javascript - vanilla js 通过 XMLHttpRequest by div id 相当于 "Loading Page Fragments"

JavaScript:获取日期差异并将月份转换为年份

javascript - 手动触发模块延迟加载 Angular 7

javascript - 交换按钮进行选择

c# - ASP.NET 响应 URL 重定向错误;从静态方法

javascript - Ajax没有得到php结果的响应

c# - ASP.NET MVC4 Ajax ActionLink 帮助程序不起作用 - 使用返回的局部 View 重新加载整个页面

javascript - 模拟事件调整大小