2015-09-25 62 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的表現 「完全」 與網址在第一行之後。