2012-01-27 13 views
3

私の問題は、キー押下をキャプチャする必要がありますが、ユーザーはいつでもiframe内部のiframe内部にいることができます。ネストされたiframeを操作する際に「グローバル」イベントを取得する方法はありますか?

最初は、リスナーをドキュメントに置くことができると思っていましたが、ユーザーがそのiframeの1つに入っていれば動作しません。

次へ私はハンドラをウィンドウに添付することを考えましたが、イベントハンドラをウィンドウにアタッチすることはできません。私はそれがうまくいくかどうか、あるいはそれがドキュメントと同じ問題になるかどうかはわかりません。

次に、すべてのiframeを処理して個々のハンドラを追加することができたと思いますが、iframeにはdomにhtmlがないため、最終的に動作しないことに気づきました。したがって、iframeにネストされたその中に。

もう1つの可能な解決策は、すべてのiframeのjsに行き、このコードを手動で追加することですが、それはあまりにも極端です。

他のアイデアはありますか?

+0

私がやると思う最初の事はいくつかのiframeに使用を避けることである。) 二つ目:http://api.jquery.com/contents/これは多分あなたは – MCSI

+0

多分あなたはwindow.framesを使用することができますすることができます[] .documentオブジェクトとそれらのすべてのドキュメントのイベントをバインド – jose

+0

私は答えを考え出した!しかし、それは私が投稿を作成した後8時間までそれを投稿することはできません。私は後で戻ってそれを投稿します。 –

答えて

0

私は自分自身の質問に答えていますが、まあまあです。あなたがこの問題に遭遇した場合、私は答えを見つけました。これはjqueryを使用していますが、そうしなければならない場合は、そのままjsに移植することができます。

var myFunction = function() { 
      alert("hello world"); 
     }; 
     var $myWindow = $(myWindow /*dom object*/); 
     $myWindow.bind("mouseover", myFunction); 
     var getNested_iframes = function (document_element) { 
      $.each(document_element.find("iframe"), function() { 
       var iframeDocument = $(this).get(0).contentWindow.document; // may need to change this depending on browser 
       iframeDocument.onkeyup = myFunction; 
       getNested_iframes($(iframeDocument)); 
      }); 
     } 
     getNested_iframes($myWindow);