2010-01-27 12 views
5

déjame aclarar esto con ... he referido a esta pregunta/respuestas y parece contener pistas, pero todavía me falta todo el cuadro¿Cuál es el contexto jQuery/javascript de un marco dentro de un iframe?

Run JQuery in the context of another frame

En esencia, la estructura de la página de índice es esta

<html> 
<body> 
    <div class="frames-wrap"> 
     <iframe id="this-iframe" src="location.php"> 

     </iframe> 
    </div> 
</body> 
</html> 

location.php continuación, contiene un conjunto de marcos (ejem, no es mi idea ...) que tiene dos marcos que se configuran como tal ...

<frameset cols="350,*"> 
    <frame src="search.php" id="frame_search" name="search"/> 
    <frame src="edit.php" id="frame_edit" name="edit" /> 
</frameset> 

si quiero manipular objetos entre la página de índice y estos elementos, ¿cómo podría hacerlo?

Sigo pensando que el contexto debería ser algo similar al window.parent.frames[0].document ... ¿qué más me estoy perdiendo?

+0

también hace referencia a esto, pero soy demasiado nuevo para publicar más de un enlace http://stackoverflow.com/questions/997986/write-elements-into-a-child-iframe-using-javascript-or- jquery – technicolorenvy

+0

esta pregunta podría ayudarlo: http://stackoverflow.com/questions/251420/invoking-javascript-in-iframe-from-parent-page (autopromoción desvergonzada ya que la pregunta fue hecha originalmente por mí) –

Respuesta

2

Prefacio: No podrá acceder al contenido de iframes a menos que provenga del mismo dominio.

Para seleccionar elementos en el marco flotante se puede utilizar una llamada jQuery como esto

element = $("#this_iframe").contents().find("#frame_search") 

La clave es usar la función contents(). Ver Traversing/contents

+1

ahh contents() es de hecho impresionante, no me di cuenta del soporte iframe que proporciona ... ¡Gracias! – technicolorenvy

2

Creo que el enlace de technicolorenvy tiene la respuesta, pero el selector tiene un segundo parámetro menos conocido en el que puede establecer el contexto.

Algo como esto:

var iframeDoc = document.getElementById('myIframe'); 
iframeDoc = (iframeDoc.contentWindow) ? iframeDoc.contentWindow : (iframeDoc.contentDocument.document) ? iframeDoc.contentDocument.document : iframeDoc.contentDocument; 


// From the parent window 
$('p', iframeDoc).html('Hello from parent'); 

http://docs.jquery.com/Core/jQuery#expressioncontext

1

Dando a sus marcos de las identificaciones que son válidos los identificadores de JavaScript ayudarían, entonces se podría usar construcciones tales como window.top.this_iframe.frame_edit.document como su contexto.

+0

gracias por la retroalimentación! sin embargo, esto es un bombardeo para mí. los identificadores ahora tienen caracteres de subrayado en lugar de ndashes. si uso console.log para ver qué ocurre "detrás de escena", devolverá algo si registro window.top.this_iframe.document O si registro window.top.document.getElementById ('this_iframe') para que parezca que el frame_edit id no se está "viendo". ¿algunas ideas? – technicolorenvy

0

Todos fueron útiles. Seguí bombardeando cuando intentaba pasar el iframe en el DOM. Esto parece ser por el hecho de que tenía código que reside en el método ready(), pero el conjunto de marcos que se llamaba dentro del iframe no se cargó por el tiempo que tenía disparado $ (document) .ready().

¡Gracias por la gran ayuda y comentarios!

Cuestiones relacionadas