2009-07-29 15 views
8

Come posso ottenere l'evento keydown su iframe?evento keydown su un iframe

+0

Questa risposta funziona per me: http://stackoverflow.com/questions/26324213/listen-for-mouse-click-and-keypress-events-within-iframe/39617876#39617876 –

risposta

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' è equivalente a' $ (document.getElementById ('iframe_id'). contentWindow.document) ' – BrunoLM

12

è necessario accedere al documento del iframe, che è attraverso l'oggetto ContentWindow

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

Assicurarsi che legherai caso dopo il telaio è stato caricato.

+5

Inoltre, assicurati di associare l'evento DOPO che il frame è stato caricato, altrimenti non sparerà. – claviska

+0

@Aksival Certo, mi sta tormentando il cervello chiedendomi perché questo non funziona da secoli ormai. – Ally

+1

@RedHouse Ho aggiornato la risposta per chiarire questo punto (ho pensato che il commento di Aksival sarebbe stato chiaro per le persone da vedere) – James

0

È così tardi per rispondere ma forse è utile per qualcuno.
Ho lo stesso problema, ciò significa che ho una pagina iframe inside a HTML in un same domain.
Ora ho bisogno di ottenere il Esc keyup event.
tuttavia non voglio (o alcune volte non riesco a farlo) scrivere qualsiasi script nel corpo di iframe.
per farlo, io uso sotto lo script per rilevare qual è l'id padre dell'elemento selezionato facendo clic su di esso.

$(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')); 
       } 
      }); 

Questo codice ha risolto il mio problema.
spero di utile.

Problemi correlati