我通過網站上的iframe加載HTML。正在加載的HTML只能在父文檔加載完成後才能加載某些內容(document.readyState == 'interactive' || document.readyState == 'complete'
)。問題在於,在父文檔加載完成後,HTML內容會被手動加載到iframe中。是否可以用JavaScript更改document.readyState?
是否有任何方法來欺騙父文檔的readyState以驗證加載的HTML內容是不是過早呈現?
我通過網站上的iframe加載HTML。正在加載的HTML只能在父文檔加載完成後才能加載某些內容(document.readyState == 'interactive' || document.readyState == 'complete'
)。問題在於,在父文檔加載完成後,HTML內容會被手動加載到iframe中。是否可以用JavaScript更改document.readyState?
是否有任何方法來欺騙父文檔的readyState以驗證加載的HTML內容是不是過早呈現?
這是對您的問題的部分回答: 這裏有兩個不同的東西:Document Object Model
和Javascript
。 DOM
是存儲顯示此頁面的查看器所需的全部信息的瀏覽器狀態。 Javascript
是用於查詢/操作狀態的工具(讀取DOM
)。
DOM通知Javascript的readystate更改,這只是單向的,因爲此屬性是read-only。簡短的回答你的問題是「不」,你不能改變使用JavaScript的readyState屬性。
要看到自己這一點,你可以拉一個控制檯(螢火蟲,Chrome瀏覽器開發工具)等,並在控制檯類型:
typeof document.readyState // "String"
document.readyState // "complete"
document.readyState = "hello world" // "hello world"
document.readyState // if you expected it to show "hello world" it still shows "complete"
我敢肯定的jQuery 1.9和以前包含一些「workabouts 「對於這種情況。你可能想看看相關的資料來看看有什麼竅門。 – user2864740
您是指$ .isReady?我認爲這是用來與$(document).ready()協同工作的,並沒有真正修改document.readyState。我將不得不查看jQuery源文件並查看究竟發生了什麼。這將是很好的一個純JavaScript解決方案 – amdilley
爲什麼不使用$ .Deferred()?所以你基本上返回一個承諾,然後只在延遲解析時加載iframe。如果您需要進一步解釋,請告知我們... –