2009-04-07 36 views
236

que tienen un iframe y con el fin de acceder elemento padre he implementado siguiente código:cómo acceder a la página padre de iFrame usando jquery?

window.parent.document.getElementById('parentPrice').innerHTML 

cómo obtener el mismo resultado utilizando jQuery?
ACTUALIZACIÓN: ¿O cómo acceder a la página primaria de iFrame utilizando jquery?

+0

Ver también http://stackoverflow.com/questions/12114243/retrieving-a-documents-parent-iframe-in-jquery/36445098#36445098 –

Respuesta

439

de encontrar en la matriz de la utilización iFrame:

$('#parentPrice', window.parent.document).html(); 

El segundo parámetro para la envoltura $() es el contexto en el que realizar la búsqueda. Esto predeterminado para documentar.

+3

Ok gran poder ayudar. –

+3

Gran respuesta, ahorré mi tiempo, gracias :) –

+16

Genial - reconociste las gracias antes de agradecerte. ¿Es posible que StackOverflow tenga problemas con los husos horarios? – belugabob

36

cómo acceder a la página de los padres iFrame usando jQuery

window.parent.document.

jQuery es una biblioteca en la parte superior de JavaScript, no es un reemplazo completo de la misma. No tiene que reemplazar cada última expresión de JavaScript con algo que involucre $.

+6

+1. jQuery es genial, pero muchas respuestas a problemas simples parecen ser 'use jQuery'. Si está cargando la biblioteca de todos modos, está bien, pero no la cargue una tarea. Además, la gente parece preocupada por JS perf, luego utiliza una API sobre JS para hacer cosas fácilmente posibles (y posiblemente más rápidas) sin la API. –

+1

@Grant Aunque sueño con que jQuery se convierta en código nativo dentro de los navegadores. –

+3

@Blowski: ¡esa es mi pesadilla!jQuery contiene un código extremadamente complejo y frágil que dice "haz lo que quiero decir" que sería completamente inapropiado para poner en una API oficial. – bobince

5

en Put ventana padre:

<script> 
function ifDoneChildFrame(val) 
{ 
    $('#parentPrice').html(val); 
} 
</script> 

y en el marco flotante archivo src puesto:

<script>window.parent.ifDoneChildFrame('Your value here');</script> 
3

sí que funciona para mí también.

Nota: tenemos que utilizar window.parent.document

$("button", window.parent.document).click(function() 
    { 
     alert("Functionality defined by def"); 
    }); 
4

Está funcionando para mí con pequeño giro. En mi caso, tengo que rellenar el valor de POPUP JS a formulario PARENT WINDOW.

así que he utilizado $('#ee_id',window.opener.document).val(eeID);

Excelente !!!

2

Podría ser un poco tarde para el juego aquí, pero acabo de descubrir este fantástico plugin jQuery https://github.com/mkdynamic/jquery-popupwindow. Básicamente utiliza un evento de devolución de llamada onUnload, por lo que básicamente escucha el cierre de la ventana secundaria y realizará las acciones necesarias en ese punto. ASÍ QUE realmente no hay necesidad de escribir ningún JS en la ventana secundaria para devolverlo al padre.

8

Si es necesario encontrar la instancia de jQuery en el documento de nivel superior (por ejemplo, para llamar a una función de utilidad proporcionada por un plug-in) utiliza una de estas sintaxis:

  • window.parent.$
  • window.parent.jQuery

Ejemplo:

window.parent.$.modal.close(); 

jQuery se adjunta al objeto window y eso es lo que window.parent es.

+0

Estoy usando mi iframe como un control de usuario. Esto me permite mantenerlo limpio y agradable. –

3

Se puede acceder a los elementos de ventana padre desde dentro de un iframe utilizando window.parent así:

// using jquery  
window.parent.$("#element_id"); 

¿Qué es la misma que:

// pure javascript 
window.parent.document.getElementById("element_id"); 

Y si usted tiene más de un iframes anidados y desea acceder al iframe superior, entonces puede usar window.top de esta manera:

// using jquery 
window.top.$("#element_id"); 

que es lo mismo como:

// pure javascript 
window.top.document.getElementById("element_id"); 
+0

Éste trabajó para mí. Gracias –

0

Existen múltiples maneras de hacer esto.

I) Obtener principal principal directamente.

por ej. quiero reemplazar mi página secundaria a continuación iframe

var link = '<%=Page.ResolveUrl("~/Home/SubscribeReport")%>'; 
top.location.replace(link); 

aquí top.location obtiene directamente de los padres.

II) obtener los padres de uno en uno,

var element = $('.iframe:visible', window.parent.document); 

aquí si tiene más de un iframe, a continuación, especifique un activo o visible.

también se puede hacer como estos para conseguir nuevos padres,

var masterParent = element.parent().parent().parent() 

III) obtener de los padres por el identificador.

var myWindow = window.top.$("#Identifier") 
Cuestiones relacionadas