2009-07-29 16 views
8

¿Cómo puedo obtener el evento de selección en iframe?evento de colocación de tecla en un iframe

+0

Esta respuesta funciona bien para mí: http://stackoverflow.com/questions/26324213/listen-for-mouse-click-and-keypress-events-within-iframe/39617876#39617876 –

Respuesta

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

12

que necesita para acceder al documento del marco flotante, que es a través del objeto ContentWindow

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

asegúrese de enlazar el evento después ha cargado el marco.

+5

Además, asegúrese de vincular el evento DESPUÉS de que el marco se haya cargado; de lo contrario, no disparará – claviska

+0

@Aksival Por supuesto, he estado trabajando en mi cerebro preguntándome por qué esto no funciona desde hace años. – Ally

+1

@RedHouse He actualizado la respuesta para aclarar ese punto (pensé que el comentario de Aksival habría sido claro para que la gente lo viera) – James

0

Es muy tarde para responder, pero tal vez sea útil para alguien.
Tengo el mismo problema, eso significa que tengo una página iframe inside a HTML en un same domain.
Ahora necesito obtener el Esc keyup event.
sin embargo, no quiero (o algunas veces no puedo) escribir ningún script dentro del cuerpo del iframe.
para hacerlo, utilizo la secuencia de comandos siguiente para detectar cuál es la identificación principal del elemento que seleccionó al hacer clic en él.

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

Este código resolvió mi problema.
espero que sea útil.

Cuestiones relacionadas