我有一个使用 iframe 托管在另一个应用程序 (A) 中的网络应用程序 (B)。我的 Web 应用程序可以毫无问题地向父级 B 发布消息 (parent.postMessage(“my message”, “*”))。
我的应用程序有一个指向外部 Web 应用程序 (C) 的链接。该链接包含一个redirectUrl,应用程序C 将在完成后调用(POST)。该 url 指向我的应用程序中的一个操作。该操作最终确保当前位置与用户单击链接之前的位置相同:
…
var response = Request.CreateResponse(HttpStatusCode.Found);
response.Headers.Location = new Uri(currentExecutionUrl);
return response;
现在,一旦用户从应用程序 C 返回到我的应用程序,就无法再从我的应用程序父应用程序 A 发布消息。在调试客户端时,我可以看到原因:window.self、window.parent 和window.top 都是相同的并且等于我的应用程序的窗口/文档。
请注意,这只发生在 iPhone / webkit 上。对于 android 设备和桌面浏览器,它可以正常工作,即 parent 和 top windows 属性按预期指向 A。
任何帮助表示赞赏!
谢谢
汉克