2015-09-25 63 views
1

我正在构建一个必须在非常旧的浏览器(IE 8,Firefox 20等)上工作的Web应用程序。浏览器支持readyState交互式?

我可以依靠document.readyState being interactive and complete正常工作吗?

基本上,我想在DOM加载后执行一些操作,但如果它已经加载,立即执行操作。就像这样:

if (document.readyState == 'interactive' || 
    document.readyState == 'complete') { 
    doAction(); 
} else { 
    document.onready = doAction; 
} 
+0

你可以在5年前找到大量关于这个问题的文章。寻找domready js libs/snips;有3或4种方法可以做到这一点... – dandavis

+0

谢谢!有趣的... jQuery在2006年使用document.readyState =='加载'的Safari ... http://code.jquery.com/jquery-1.0.js – dangerChihuahua007

+0

互动状态是不可靠的IE9和完全在早期的Android上缺席。后者的浏览器不支持'readyState'阶段,但不支持'onreadystatechange'。这提供了一个机会,用if(typeof document.onreadystatechange!=='object')'过滤它。我测试脚本的'async'支持以排除IE9。使用'complete'似乎十分跨浏览器。 – Shikkediel

回答

0

我发现,使用AppleScript 2.5和Safari 10.0.3,我不得不使用下面的结构:

do JavaScript "document.location.href = \"" & aNewURL & "\""   
repeat 5 times 
    if ¬ 
     ((do JavaScript "document.location.href") = aNewURL) and ¬ 
     ((do JavaScript "document.readyState") = "complete") then ¬ 
      return 
    delay 3 
end repeat 
error... 

由于readyState的表现 “完全” 与网址在第一行之后。