0

iframe をホストする Javascript Windows ストア アプリケーションがあります。PostMessageiframe 内の Web ページはアプリを認識しないため、アプリへのインターフェイスがありません。

iframe に「ログイン」すると、iframe は Cookie を設定します。しかし、私のアプリでは、iframe Cookie を取得する方法があるとは思えません。これは正しいです?

Web ページが私のアプリケーションを認識している場合はどうなりますか? (つまり、iframe 内の Web ページを変更できます) 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 に答える