我們有一些代碼正在利用HTML 5中的新功能postMessage來解決跨域通信問題。我試圖找到一種方法來檢測我是否將消息發佈到正確加載其內容的iFrame。如果幀無法正確加載,postMessage不知道這一點,並將愉快地發送消息到無響應幀(我假設消息正在傳遞到幀,而不管它是否加載內容)。HTML 5 PostMessage /檢測iFrame無法加載
這是我們的工作流程:
- 用戶負載http://www.a.com/specialpage.aspx
- a.com/specialpage.aspx依次加載一個孩子的iFrame與它的源設置爲從另一個域的代理頁,說http://www.b.com/lookatmyproxy.htm作爲例。
- 用戶做了一些動作,點擊一個按鈕
- window.postMessage是用來發布消息到子框架,它是(希望)由代理框架加載(b.com/lookatmyproxy。 HTM)。收到該郵件後,將對郵件進行驗證,處理,並將回覆郵件發送回父框架(a.com/specialpage.aspx)。
- 用戶顯示他們的行動結果,每個人都很高興。
問題的情況是,如果b.com下跌和代理未能在iFrame中加載,postMessage的將剛剛火,忘記和父框架從來沒有收到任何類型的錯誤或答覆。 iframe的安全性問題和性質似乎阻止我檢查幀內容或狀態,以確定代理是否正確加載。我可以在a.com和b.com之間放置一些帶有超時邏輯的中繼(a.com發佈到a.com/relay,然後發佈到b.com/proxy等) ,但似乎過於複雜。
有沒有辦法讓我檢查iFrame並告訴它的內容正確加載,或者檢測到postMessage傳遞給源代碼未加載的框架?