2012-01-17 11 views
0

iframeをホストするJavascript Windowsストアアプリケーションがあります。私のiframe内のウェブページは私のアプリを認識していないので、私のアプリにはPostMessageのインターフェースがありません。WindowsストアアプリとiFrameクッキー

iframeはiframeにログインするとクッキーを設定します。しかし、私のアプリでは、私はiframeのクッキーを取得する方法があるとは思わない。これは正しいです?

ウェブページが自分のアプリケーションを知っている場合はどうなりますか? (つまり、iframe内のウェブページを変更できます)PostMessageを使用しますか?

+0

iframeのコンテンツはリモートまたはローカルですか。 –

+0

リモート、Apple.comと言う。 @TiagoAndradeSilva –

答えて

0

PostMessageを使用すると、メインページにメッセージが送信されます。ここで

はWin8の開発者プレビューの例を働いている:サーバー上

<!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」に変更することがあります。

+0

ありがとう@TiagoAndradeSilva、私の質問では、 "サーバー"(あなたの用語を使用して:P)は、このpostMessageが設定されていないことを意味する私のアプリを認識していないことを指摘した。ですから、私はこれが不可能かどうか尋ねています。 –

+0

メッセージの受け渡しはクライアントの機能です。つまり、ブラウザによって完全にサポートされており、ブラウザによって読み込まれた "コンポーネント"間の通信を許可することができます(フレームとの通信以外にもメッセージはワーカーとの通信に使用されます)。ドキュメントとリモートコンテンツを読み込むiframe間のメッセージの受け渡しをサポートするために、サーバーに特別な設定は必要ありません。 "変更する"唯一のことは、おそらくtoStaticHtmlメソッドを呼び出して、受け取ったデータをinnerHTMLプロパティに渡す前にサニタイズすることです。 –

+0

返信@LuisAbreuありがとう。まず、これはアプリであり、ブラウザの状況ではありません。第二に、私たちはブラウザにいるとしましょう、私はここで同じ起源のポリシーが適用されたと思ったので、どのようにpostingMessageなしで他のドメインのクッキーを使用できるようになりますか? –

関連する問題