2016-12-06 5 views
0

IFrameと親ウィンドウ間のセッション処理を依頼していますが、両方ともドメインが異なるため、2つのHTMLページを持つPOCから始めました。一方は親ウィンドウで、もう1つはIframeでダイアログウィンドウとしてボタンで開きますクリック。Iframeでのセッション処理

ダイアログウィンドウから、ポストメッセージを時間間隔で渡します。エラーメッセージをスローすることによって、親ウィンドウ内のメッセージを検証します。以下は私のコードスニペットであり、私はGoogleのサーフからとったものです。

親ウィンドウ:

<script> 
    function openFrame() { 
     var iFrame=window.showModalDialog('Iframe.html'); 
    } 

    window.onmessage = function(e){ 
     if (e.data == 'maintainSession') { 
      alert('Active in main!'); 
     } 
    }; 
</script> 

<button id="openFrame" onclick="openFrame()">Open Frame</button> 

インラインフレームページ:

<script> 
    window.setInterval(window.top.postMessage('maintainSession', '*'), 10000);   
</script> 

問題は..I'mは10秒後に警報得ていないです。だから誰も私がここで働いていることを解決するのを助けることができますか?予め

答えて

0

のsetIntervalの最初のパラメータで

おかげで機能することが期待されます。

window.setInterval(function(){ window.top.postMessage('maintainSession', '*'); }, 10000); 

すぐのpostMessageを実行するとのpostMessageのリターン()は何のsetIntervalに与えていました。

+0

私はアラートを受け取ることができません:( – Anonymous

0

あなたの親ウィンドウは別のiframe内にある必要がありますか、ブートストラップ、カラーボックスなどのプラグインを使用している場合や、jsfiddleなどのオンラインで試している場合は、iframeの直接の親を取得できますparent inside parent.postMessage(message, '*');

+0

Firefox開発ツールで試してみると、window.topまたはparentは両方とも親ウィンドウではなくiframeページを読み込んでいます。信じる – Anonymous

関連する問題