“readyState ==='Interactive'”和“Jquery.ready()”之间的区别

时间:2014-02-21 15:07:19

标签: javascript jquery html dom

今天我正在玩DOM readyState,我在JQuery.ready()找到了一些奇怪的东西,

JQuery.ready()事件发生在DOMContentload事件之前,然后我将interactive放入我的代码中

喜欢:document.readyState === "interactive"

然后这段代码在Jquery.ready()之前加载所以,我有一个问题,是

JQuery.ready()document.readyState === "interactive相同或相似? 以及JQuery在那里应用的技术.ready()事件? 我如何在我的纯Javascript中应用此.ready()

我阅读了很多相似类型的帖子,但没有人提供确切的解决方案来实现JQuery.ready()DOMContentload之后.ready()而不是{{1}}时加载的JavaScript。

Here MY Jsfiddle

1 个答案:

答案 0 :(得分:1)

当我们浏览某些内容时,document.readyState可以是以下之一:

loading

文档仍在加载。

interactive

该文档已完成加载,并且已对其进行了解析,但是仍在加载诸如图像,样式表和框架之类的子资源。

complete

文档和所有子资源均已完成加载。状态指示load事件即将触发。

JQuery.ready()不等于或类似于document.readyState === "interactive,因为.redyState返回字符串interactiveloading浏览器正在同步服务器中的数据返回complete字符串并创建一个load事件。

jQuery使用上述功能为其库创建doc.ready()

  1. 如果您希望在加载文档后运行函数,有很多方法...但是其中一种

function myFun(){
  // All your JS code which will use in your document
  console.log("Hey now I am ready to run");
}
// just call the myFun() in a eventListene function as callback function
//the myFun will run after the 
document.addEventListener('DOMContentLoaded', myFun, false);

  1. 一点了解jQuery的功能(无论放置script标记的位置都可以使用它。)

const ready =(fun) => {
   if(document.ready == 'interactive' || document.readyState =="complete"){
      // calling function
      setTimeout(fun, 1);
          }
          // we can also implement by event listner
          else {
            document.addEventListener("DOMContentLoaded", fun);
          }
        }
ready(() =>  {
          // This is the functin whitch pass to the ready function
          console.log("I am ready.")
        });

嘿,我知道那不好,但是背后的想法是。

  1. 稍微了解一下jQuery的功能(无论将script标记放置在何处都可以使用)。 替代方法是 如果支持,它将尝试标准:

window.addEventListener('load',fn,false)

后退到:

document.addEventListener('DOMContentLoaded', fn, false);

后退到:

window.addEventListener('load', fn, false )

或对于较旧版本的IE,它使用:

document.attachEvent("onreadystatechange", fn);



window.attachEvent("onload", fn);

信息来自:document.ready on MDN