我嘗試使用postMessage從iFrame中檢索對象時遇到問題。基本上,我有一個iFrame,我被迫用來擊中SAML身份驗證端點。該SAML端點返回javascript對象到所述iFrame,其接着發送該對象到父窗口作爲parent.postMessage
事件的一部分:iFrame parent.postMessage在IE9中返回字符串而不是對象
parent.postMessage(authResponse,"*");
在Chrome和IE的較新版本,父窗口事件偵聽器碰壁對象只是很好,我們正在運行。但是,在IE 9中,iFrame不發送對象,它發送一個字符串,如"[Object object]"
。
所以當然代碼試圖引用對象屬性如authResponse.token
失敗。我已經看了docs for postMessage,我看你怎麼可以detect whether your browser will send an object or a string。我也相信我不能只是look at the contents of the iFrame,因爲它的確是跨域的。
我無法控制iFrame的內容(將auth objectsent作爲json字符串,或者讓iFrame包含一些polyfill等)。所以我的問題是,我沒有選擇?任何人都可以想到可能適合的創意黑客?
謝謝!
如果代碼期望IE8和9將接受一個對象作爲'postMessage()'的參數,那麼它就會被破壞。那些瀏覽器根本就不會那樣做。 – Pointy
@有點我相信你是對的,我沒有想過解決這個問題。如果您想發佈答案,我會接受!謝謝。 – tengen