0

我有一个托管 iframe 的 Javascript Windows 商店应用程序。我的 iframe 内的网页不知道我的应用程序,因此它没有PostMessage与我的应用程序的任何接口。

当我在 iframe 中“登录”时,iframe 将设置一个 cookie。但是在我的应用程序中,我不相信有办法可以获取 iframe cookie。它是否正确?

如果网页知道我的应用程序怎么办?(即我可以更改 iframe 中的网页) 我使用 PostMessage 吗?

4

1 回答 1

0

您可以使用PostMessage,您的主页将收到该消息。

这是 Win8 Developer Preview 中的工作示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=1024, height=768" />
<title>WinWebApp1</title>
<!-- WinJS references -->
<link rel="stylesheet" href="/winjs/css/ui-dark.css" />
<script src="/winjs/js/base.js"></script>
<script src="/winjs/js/wwaapp.js"></script>
<script src="/winjs/js/ui.js"></script>
<!-- WinWebApp3 references -->
<link rel="stylesheet" href="/css/default.css" />
<script src="/js/default.js"></script>
        <script type="text/javascript">

            window.attachEvent("onmessage", receiveMessage);

            function receiveMessage(e) {
                if (e.origin == "http://www.scrumpt.com")
                    document.getElementById("target-element-id").innerHTML = e.data;

            }
</script>
</head>
<body>
    <iframe src="http://www.scrumpt.com/frametest2.html" style="display: block; width: 699px; height: 296.95px; left: -499px; top: 0px;"></iframe>
<div data-win-control="WinJS.UI.ViewBox" style="display: block; top: 50%;">
        <div class="fixed-layout">
        <div id="target-element-id">Click on Send Message above</div>
    </div>
    </div>
</body>
</html>

在服务器上(此时它在http://www.scrumpt.com/frametest2.html上运行)你有:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function send() {
      parent.postMessage('hello world', '*');
}
</script>
</head>
<body>
<a href="javascript:send()">Send message</a>
</body>
</html>

如果复制粘贴上面的代码,请确保您的 div(“target-element-id”)具有正确的 id。粘贴时 VS 可能会将 id 更改为“Div1”。

于 2012-01-18T00:08:24.223 回答