我看过这个关于使用 iframe 和做 postMessage: Metro App and iFrame cookie的帖子。我试图在 Win8 Release Preview 中使用 HTML/JS Metro 应用程序做一些非常相似的事情,但在该解决方案中复制行为似乎相当不可能。
我有一个简单的框架存储在远程位置:
<!DOCTYPE html>
<html>
<body>
<script>
window.onmessage = function(e) {
alert("Hello world");
debugger;
};
</script>
</body>
</html>
在我的 default.html 中,我有一个包含 iframe 的 div,如下所示:
<div id="container">
<iframe id="frame" src="https://dl.dropbox.com/u/75275447/win8Frame.html"></iframe>
</div>
我有一个在#frame 上执行 postMessage 的任意按钮,并且会在普通的 Html 站点中触发远程帧 onmessage,但是我可以查看 VS 中的错误列表并查看:
APPHOST9613:应用程序无法导航到 https://dl.dropbox.com/u/75275447/win8Frame.html,因为此错误:RESOURCE_NOT_FOUND。
我已尝试查看任何可能允许我实现此目的的清单并启用:
- 家庭或工作网络
- 互联网(客户端和服务器)
- 互联网(客户端)
无济于事...我还尝试将一个框架(应用程序本地)加载到 Web 内容中(通过 ms-wwa-web://),其中包含一个 div,该 div 托管远程 iframe 并链接 onmessage 以转发postMessage 到远程 iframe,但我再次看到另一个错误:
APPHOST9624:应用无法使用脚本加载 ms-wwa-web://frame.html/ url,因为该 url 会启动另一个应用。只有直接的用户交互才能启动另一个应用程序。
我开始认为这是一项不可能完成的任务。