如何检测DOM准备并添加没有jQuery的类?

ale*_*lex 20 javascript jquery

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

$(document).ready(function() { $('body').addClass('javascript'); });
Run Code Online (Sandbox Code Playgroud)

如果我将它添加到html元素中,我是否可以省去DOM准备好的部分?但有一个问题是验证器不喜欢html元素上的class属性,即使它是用JS插入的.

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

CMS*_*CMS 47

如果要重现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();
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

  • 你为什么要分离readystatechange事件?IE8会两次触发该事件吗?为什么? (3认同)