Windows应用商店应用和iFrame cookie

时间:2012-01-17 20:27:18

标签: javascript cookies windows-8 windows-store-apps

我有一个托管iframe的Javascript Windows应用商店应用。我的iframe内部的网页不知道我的应用,因此它没有任何PostMessage我的应用界面。

当我在iframe中登录时,iframe会设置一个Cookie。但在我的应用程序中,我不相信有一种方法可以获得iframe cookie。这是对的吗?

如果网页知道我的申请怎么办? (即我可以更改iframe中的网页)我是否使用PostMessage?

1 个答案:

答案 0 :(得分: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”。