2011-06-11 48 views
95

En nuestra aplicación, analizamos una página web y la cargamos en otra página en un iFrame. Todos los elementos en esa página cargada tienen sus tokenid-s. Necesito seleccionar los elementos por esos tokenid-s. Medios: hago clic en un elemento en la página principal y selecciono el elemento correspondiente en la página en el iFrame. Con la ayuda de jQuery lo estoy haciendo de la siguiente manera:Seleccionar un elemento en iFrame jQuery

function selectElement(token) { 
    $('[tokenid=' + token + ']').addClass('border'); 
} 

Sin embargo, con esta función que puede seleccionar los elementos de la página actual, no en el marco flotante. ¿Alguien podría decirme cómo puedo seleccionar los elementos en el iFrame cargado?

Gracias.

Respuesta

116
var iframe = $('iframe'); // or some other selector to get the iframe 
$('[tokenid=' + token + ']', iframe.contents()).addClass('border'); 

También tenga en cuenta que si el src de este marco flotante está apuntando a un dominio diferente, debido a razones de seguridad, no podrá acceder a los contenidos de este marco flotante en javascript.

+5

Tenga en cuenta $ ('iframe') no devuelve directamente el iframe. Debes sacarlo de la matriz. – Kayla

+0

Gracias por la disposición de ayudar. Pero esto no parece funcionar. – cycero

+2

@cycero, debería funcionar. ¿Estás generando este iframe dinámicamente? No olvide que si señala el elemento src de este iframe a otro dominio que no sea el suyo debido a razones de seguridad, no puede acceder a sus contenidos. –

39

Tome un vistazo a este post: http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html(); 

Coloque el selector en el método de búsqueda.

Sin embargo, esto puede no ser posible si el iframe no proviene de su servidor. Otros mensajes hablan de permisos de errores denegados.

jQuery/JavaScript: accessing contents of an iframe

+0

Eso funciona en términos de obtener el HTML del elemento, pero ¿cómo puedo agregar una clase de CSS a ese elemento seleccionado? $ ("# iframeDiv"). contents(). find ("[tokenid =" + token + "]"). addClass ("borde"); no parece funcionar – cycero

+1

¿Obtiene algún permiso de errores denegados? ¿Puedes darme el html del iframe? –

+0

No, no hay permisos denegados. – cycero

13

cuando el documento está listo eso no quiere decir que su marco flotante está listo también,
por lo que debe escuchar el evento de carga iframe continuación, acceder a sus contenidos:

$(function() { 
    $("#my-iframe").bind("load",function(){ 
     $(this).contents().find("[tokenid=" + token + "]").html(); 
    }); 
}); 
-3

aquí es simple JQuery para hacer esto para que div se pueda arrastrar solo en contenedor:

$("#containerdiv div").draggable({containment: "#containerdiv ", scroll: false}); 
Cuestiones relacionadas