2011-01-25 5 views
10

したがって、iframeがある.jspページがあります。このiframeのコンテンツは別のドメインでホストされています。モバイルデバイスでは、このiframeを探して方向変更を検出し、それに応じてコンテンツのサイズを変更します。ドメイン間iframe内からの向きの変更を検出します

オリエンテーションの変更を検出するこのiframe内に格納されたコンテンツにイベントリスナーを追加する方法はありますか?

このコンテンツがiframe内になく、代わりに直接アクセスされた場合は、次のような呼び出しがあります:window.addEventListener( 'orientationchange'、FunctionToBeCalled、false); は方向変更をキャッチし、適切な機能を呼び出します。しかし、私はこれをiframe内から動作させることはできません。私はparent.addEventListener、parent.window.addEventListener、top.addEventListenerなどを試しましたが、役に立たないです。

これはクロスドメインコールなので、私は非常に限られた親機能を利用できるので、私はそれを聞いたことから、私は失敗するのですか?

ご協力いただければ幸いです。ありがとう!

答えて

13

親ウィンドウのコードを所有している場合は、クロスドキュメントメッセージを使用してこれを解決できます。親ウィンドウからiframeにオリエンテーションを送ることができます。これは、クロスドメインのシナリオでも同様に機能するはずです。 私はこれをiPhone 4.3とAndroid 2.2でテストしました。親ウィンドウで

:向きの変更のために登録して、iframe内のiframe

window.addEventListener("orientationchange", function(){ 
       var iframe = document.getElementById("youriframe").contentWindow; 
       iframe.postMessage({ 
        orientation: window.orientation 
       }, 'http://the.domain.of.the.iframe.com'); 
}, false) 

に転送:詳細については、親からの向きの変化に

window.addEventListener("message", function(e){ 
      var newOrientationValue = e.data.orientation; 
      alert(newOrientationValue); // <--- DO your own logic HERE 
}, false) 

チェックこれをサブスクライブ:http://html5demos.com/postmessage2

関連する問題