gpt4 book ai didi

javascript - iFrame parent.postMessage 在 IE9 中返回字符串而不是对象

转载 作者:行者123 更新时间:2023-11-29 10:15:47 25 4
gpt4 key购买 nike

我在尝试使用 postMessage 从 iFrame 检索对象时遇到问题。本质上,我有一个 iFrame,我被迫使用它来访问 SAML 身份验证端点。 SAML 端点将 javascript 对象返回到 iFrame,然后将该对象作为 parent.postMessage 事件的一部分发送到父窗口:

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 的内容(将身份验证对象作为 json 字符串发送,或者让 iFrame 包含一些 polyfill,等等)。所以我的问题是,我是不是别无选择?谁能想到一个可能适合的创意技巧?

谢谢!

最佳答案

支持 postMessage() 的旧版 Internet Explorer 根本不支持通过接口(interface)进行对象序列化。即使是旧版本的 Firefox 也不支持,但由于独立浏览器往往会主动更新自己,所以这不是一个实际问题。

如果您处理的代码假设它可以使用 postMessage() 来传输对象,那么它在 IE10 之前的 IE 中就无法工作。

关于javascript - iFrame parent.postMessage 在 IE9 中返回字符串而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com