2010-12-10 25 views
30

Tengo una página que se muestra dentro de un iframe.obtener parent.location.url - iframe - de hijo a padre

Necesito obtener el parent.location.url con js de esa página (página secundaria).

Ambos sitios están en dominios diferentes.

Estoy intentando:

alerta (parent.location.url)

pero me sale este error:

ha denegado el permiso para http://parentdomain para obtener Location.URL propiedad de http://childdomain.

???? ¿Es posible?

+1

¿Controla ambos dominios? si es así, probablemente. De otra manera no. – Alohci

Respuesta

4

Ha intentado algo así como:

alert(window.top.location.href); 
+0

No tengo control en la página primaria: S –

+6

Si solo está tratando de ver la referencia, (que sería el que cargó ese fotograma) ha intentado algo como: if (document.referrer! = ' ') documento.write ('Gracias por visitar desde' + document.referrer); – PriorityMark

7

Lo que estamos tratando de hacer no es posible per se. A menos que tenga control sobre la página de inicio de la página secundaria. Si lo hace, puede llamar a la página secundaria con una declaración get en la URL de la página principal. Por lo tanto, si su página principal es http://parentpage.com, esta es la forma de llamar al iFrame.

<iframe src='http://childpage.com/?parent=http://parentpage.com' /> 

Entonces todo lo que tiene que hacer en la página de niño para obtener la referencia es conseguir la cadena con

window.location.search //not sure of browser compatibility with this 

y extraer la URL de la página principal por el acaparamiento de que fuera de esa cadena. Daría más detalles, pero ni siquiera estoy seguro de la primera pregunta que tenía.

+0

Intenté cualquier otro método enumerado aquí. Ahora en 2015, debido a los permisos de navegador bastante estrictos, se bloquea el JavaScript para este caso. Pasar los datos al iFrame en la url es la única forma. – FactoryAidan

2

solo funcionan si la página padre y el iframe están en el mismo dominio. Si no están en el mismo dominio, puede intentar pasar la ubicación a través del src, como sugirió Madison Williams.

Esa es probablemente la razón de que está recibiendo "permiso denegado ..."

1

Probar:

var pathname = window.parent.location.href 
71

intente esto:

var referrer = document.referrer; 
alert(referrer); 
+2

Gracias, de todas las soluciones propuestas, esta es la única que me dio información cuando el iframe está en un dominio diferente al de la página de llamadas. –

+0

eres bienvenido hombre :) – GianFS

+1

ama esta solución por el motivo de dominio, pero no obtiene la URL completa. Falta la variable hash que devolverá window.location. – toobulkeh

2

podrás encontrarlo como esto, y todos los navegadores deben ser capaces de soportarlo:

query = window.parent.location.search.substring(1); 

No deberías obtener errores de permiso con esto, pero puedo estar equivocado.

+3

Esto no funciona en FF18, IE9: Permiso denegado – pulzarraider

1

Utilice postMessage para pasar datos de una ventana a otra. Es un poco complicado, pero se requiere cuando las ventanas se comunican a través de los orígenes.

+0

+1 ya que esta es la única solución que funciona al utilizar una parte de complemento hospedado de SharePoint. document.referrer no funciona, y no se puede acceder al atributo iframe src desde la web del host desde la parte de add in. Los probé todos y este funcionó a la perfección. ¡Gracias! – zpert

Cuestiones relacionadas