2010-09-14 18 views
8

Cómo agregar un evento de clic a <p> elementos de marco flotante (con jQuery)Cómo agregar un evento de clic a p elementos de marco flotante (usando jQuery)

<iframe frameborder="0" id="oframe" src="iframe.html" width="100%" name="oframe"> 
+1

posible duplicado de [Definir un evento en el elemento iFrame con jQuery] (http://stackoverflow.com/questions/2218404/define-an-event-on-iframe-element-with-jquery) –

+0

¿Está intentando hacer esto sin agregar ningún código al contenido dentro del iframe? – Munzilla

Respuesta

7

Hay una función especial de jQuery que hace eso: .contents(). Vea el ejemplo de cómo funciona.

+1

Gracias, $ ('# iframe'). Contents(). Find ('p'). Click() – faressoft

1

Su mejor mejor apuesta es invocar el iframe AS SIEMPRE, ya que es parte de tu dominio.

Iframe.html

<html> 
    <head> 
     <script> 
      window.MyMethod = function() 
      { 
       $('p').click(); 
      } 
     </script> 
    </head> 
    <body></body> 
</html> 

y luego usar

document.getElementById('targetFrame').contentWindow.MyMethod(); 

Para invocar esa función.

Otra forma es acceder al iframe a través del window.frames.

<iframe name="myIframe" src="iframe.html"/> 

y el Javascript

child_frame = window.frames['myIframe'].document; 
$('p',child_frame).click(function(){ 
    alert('This click as bound via the parent frame') 
}); 

Eso debería funcionar bien.

+1

¿Por qué votar abajo? – RobertPitt

0

Al dar una referencia al documento marco flotante como el segundo parámetro de jQuery, que es el contexto:

jQuery("p", document.frames["oframe"].document).click(...); 
0

para acceder a cualquier elemento dentro de un iframe, un simple enfoque de JavaScript es como sigue:

var iframe = document.getElementById("iframe"); 
var iframeDoc = iframe.contentDocument || iframe.contentWindow; 
// Get HTML element 
var iframeHtml = iframeDoc.getElementsByTagName("html")[0]; 

Ahora puede seleccionar cualquier elemento que utiliza este elemento html

iframeHtml.getElementById("someElement"); 

Ahora, puede enlazar cualquier evento que desee a este elemento. Espero que esto ayude. Perdón por un inglés incorrecto.

Cuestiones relacionadas