1

我们有 2 个 Web 应用程序,它们在 2 个不同的框架(A 和 B)中显示信息。A 中的 javascript 读取 B 的隐藏字段并根据隐藏字段的值采取一些行动。A还负责加载B的第一页,B可以有​​多个页面,A的命令可以在B的任何页面中,B的页面是根据B的当前状态动态构建的A 和 B 来自同一个域。但在某些情况下(应用程序的性能和架构),我们需要让 A 和 B 来自 2 个不同的域,在这种情况下,跨域限制不允许 A 读取 B 隐藏字段。我尝试使用 Access-Control-Allow-Origin 但它在浏览器中已加载的 2 个框架之间不起作用。

有人有解决问题的想法吗

坦率

4

1 回答 1

0

在同一窗口中有来自不同域的多个 iframe 的情况下 - 您应该使用postMessage API,它可以在 iframe 之间发送消息(无论来源如何)。但是,您必须更改两个 iframe 中的代码才能使 postMessage 正常工作。

基本上,不是 A 读取 B 的字段,而是 A 会向 B 发送一条消息,告诉它它想要读取它的字段,然后 B 会向 A 发送另一条消息,其中包含这些字段中的数据。

您还可以尝试使用一些基于 postmessage 的更高级的库,例如jsChannelpmrpc,它们使您能够以更自然的方式(远程过程调用)在 iframe 之间进行通信,而不是发送消息。

于 2012-12-14T07:41:22.440 回答