2009-10-31 10 views
15

¿Cómo puedo adjuntar un controlador de evento click a un elemento dentro de un iframe?Adjuntar controlador de clics incluso en el elemento dentro de iframe con jQuery

Esto es lo que he intentado y no funciona:

$("#parent iframe").contents().find("a").live("click", function() { 
    alert ("test"); 
    return false; 
}); 

El marco flotante está en el mismo dominio.

+1

Su código funcionará siempre que la página principal y el iframe provengan del mismo dominio. –

Respuesta

11

Ha detectado el problema. LIVE no funciona dentro de un iframe. Cambiar a bind funciona bien. Haré una delegación de evento manual en su lugar.

+1

Tenga en cuenta que este no es el único problema que tendrá al intentar crear una ventana/marco con una copia de jQuery que viva en otra. Para cualquier cosa compleja, tendrá que cargar copias de jQuery en ambos marcos. jQuery está optimizado para prácticas secuencias de comandos de una sola ventana, no para secuencias de comandos cruzadas (lo que es intrínsecamente más complicado, jQuery o no). – bobince

0

Básicamente, probablemente no sea una suposición que el contenido sea probablemente de un dominio diferente (uso habitual de iFrames). Estos artículos explican por qué:

iframes and cross domain security Cross-Domain Ajax Insecurity

alternativa tendrá que modificar el código fuente en el marco flotante (si tiene control sobre él) o se puede pedir a los usuarios a reducir su seguridad del navegador (que podría ser posible en una intranet, pero incluso entonces no es una buena idea).

+0

Está en el mismo dominio, pero gracias por decir que debería funcionar, lo volveré a ver. – Jourkey

Cuestiones relacionadas