2009-07-29 17 views
8

iframeでkeydownイベントを取得する方法はありますか?あなたは、フレームがロードされた後は、イベントを結合していることを確認しContentWindowオブジェクトを介してiframeのkeydownイベント

$(document.getElementById('IFrameId').contentWindow.document).keydown(function(){ alert('Key down!'); }); 

あるIFRAMEのドキュメントにアクセスする必要が

+0

この回答は私のために働いています:http://stackoverflow.com/questions/26324213/listen-for-mouse-click-and-keypress-events-within-iframe/39617876#39617876 –

答えて

5

Adding event handler to an iframe using JQuery

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() { 
    // my func 
}); 
+6

'$("#iframe_id ").get(0).contentWindow.document'は、$(document.getElementById( 'iframe_id').contentWindow.document)と同等です。' – BrunoLM

12

+5

また、フレームがロードされた後にイベントをバインドするようにしてください。発火しません。 – claviska

+0

@Aksivalもちろん、これがなぜ今の年齢ではうまくいかないのか不思議に思っています。 – Ally

+1

@RedHouseその点を明確にするための回答を更新しました。(Aksivalのコメントは人々には分かりやすいと思っていました) – James

0

これは非常に遅いですが、多分誰かにとって役に立ちます。
私はiframe inside a HTMLのページをsame domainに持っているという同じ問題を抱えています。
今私はEsc keyup eventを取得する必要があります。
しかし、私はiframe本体の中にスクリプトを書くことを望んでいません。
これを行うには、以下のスクリプトを使用して、クリックして選択した要素の親IDを検出します。

$(window).load(function() { 
      jQuery(jQuery('[id="frame"]')[0].contentWindow.document).on('keyup', function (e) { 

       var _currntItem = ($(e.target)) 

       if (e.keyCode === 27) { 
        alert(_currntItem.parent().attr('id')); 
       } 
      }); 

このコードは私の問題を解決しました。
が便利です。

関連する問題