2009-02-24 120 views
251

¿Qué JavaScript necesito para redirigir una ventana padre de un iframe?Redirigir la ventana padre de una acción de iframe

Quiero que hagan clic en un hipervínculo que, mediante JavaScript o cualquier otro método, redirigiría la ventana primaria a una nueva URL.

+4

La ventana ** parent **, en sí misma, podría ser un 'IFrame' también.Dado que la respuesta aceptada se dirige a la ventana ** top **, le sugiero que cambie un poco su pregunta. –

Respuesta

413
window.top.location.href = "http://www.example.com"; 

Como se dijo anteriormente, volverá a dirigir el iframe padres.

+0

¿* solo * los dominios tienen que coincidir? ¿O los dominios, protocolos y puertos tienen que coincidir? –

+0

Solo he hecho esto en un sitio web HTTP de puerto 80 normal. – MIP

+0

debería considerar location.asign (newURI) método de objeto de ubicación ':)' – Stphane

49
window.top.location.href = "http://example.com"; 

window.top se refiere a la ventana de objeto de la página en la parte superior de la jerarquía de marcos.

+7

La propiedad window.top.location.href no se puede actualizar desde Iframe, arroja denegación de acceso denegada. Solo se puede ejecutar cuando esté probando en localhost –

+3

@Ummar: Añadiría que esto funciona cuando el elemento primario y el iframe tienen el mismo dominio, el mismo puerto (mismas políticas de origen), arroja una excepción de acceso denegado cuando son diferentes, para evitar infracciones de seguridad – Vimvq1987

+4

@Ummar que no es cierto, http://jsfiddle.net/ppkzS/ como prueba. Puede cambiar window.top.location.href. Simplemente no puedes leerlo. Funciona en cromo. – Parris

12

o una alternativa es la siguiente (utilizando el objeto del documento)

parent.document.location.href = "http://example.com"; 
+5

Esa solución es específica de Firefox. Uno solo debería usar 'parent.location.href = ...'. https://developer.mozilla.org/en/document.location – kay

88

me encontré con que también funciona <a href="..." target="_top">link</a>

+1

Funciona para mí en asp.net –

+6

Si bien la respuesta seleccionada es correcta, creo que esta es una mejor respuesta para la intención de la pregunta. Además, funcionará para las personas que tienen JS deshabilitado. – Michael

+0

Acepto que esta es la mejor solución, pero OP pidió específicamente javascript. Por otro lado, OP especificó que debería dispararse a través de un anclaje. No puedo ver un escenario en el que uno se vea forzado a usar javascript desde una etiqueta de anclaje para lograr el resultado deseado, por lo que la pregunta es engañosa. – nocarrier

1

Es posible redirigir desde un iframe, pero no obtener información del padre.

1

Esto resolverá la miseria.

<script>parent.location='http://google.com';</script> 
0

Trate de usar

window.parent.window.location.href = 'http://google.com' 
+0

Versión simple: ** parent.window.location = ''; ** –

+1

o simplificado aún más: 'parent.location = 'url'' – grilly

-9

iframe Remitir dentro ventana padre por iframe en la misma matriz:

window.parent.document.getElementById("content").src = "content.aspx?id=12"; 
1
window.top.location.href = 'index.html'; 

Esto redireccionará la ventana principal de la página de índice. Gracias

+0

Duplicado de [esta respuesta] (https://stackoverflow.com/a/ 580675/241211) de casi 5 años antes. – Michael

5

@MIP es correcto, pero con las versiones más nuevas de Safari, tendrá que agregar el atributo de sandbox (HTML5) para dar acceso de redirección al iFrame. Hay algunos valores específicos que se pueden agregar con un espacio entre ellos.

de referencia (que tendrá que desplazarse): https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Ex:

<iframe sandbox="allow-top-navigation" src="http://google.com/"></iframe> 
6

target="_parent" funcionó muy bien para mí. fácil y sin problemas!

+0

Estos parecen funcionar muy bien. ¿Hay algún inconveniente para usar este método en lugar de Javascript? – flyingL123

+0

no que yo sepa. COMPARTE si descubres algo. – rDroid

0

Si desea redirigir a otro dominio sin que el usuario tenga que hacer nada puede utilizar un enlace con la característica:

target="_parent" 

como se ha dicho anteriormente, y luego usar:

document.getElementById('link').click(); 

para que lo redirija automáticamente.

Ejemplo:

<!DOCTYPE HTML> 

<html> 

<head> 

</head> 

<body> 

<a id="link" target="_parent" href="outsideDomain.html"></a> 

<script type="text/javascript"> 
    document.getElementById('link').click(); 
</script> 

</body> 

</html> 

Nota: El comando javascript clic() debe venir después se declara el enlace.

Cuestiones relacionadas