Acceda al DOM de los padres desde el script en un iframe en IE Mobile
-
05-07-2019 - |
Pregunta
Tengo una ventana enmarcada (actualmente iframe pero posiblemente sea una trama) - No tengo control sobre esto.
Me gustaría detectar si mi contenido está dentro de un iframe (o marco).
Quería comparar la ubicación del documento actual con la que contiene el objeto superior, pero parece que es el mismo objeto (ventana superior ===).
Después de una búsqueda exhaustiva en Google, llegué a este IEMobile entrada de blog y en uno de los comentarios hay esta respuesta:
iemoblog dijo:
No, no puede acceder a ninguna parte de DOM del padre del script en un iframe en IE Mobile.
20 de diciembre de 2007 12:12 PM
Parece que no puedo encontrar ninguna documentación sobre esto. ¿Alguien puede ayudar a confirmar esto o incluso mejor? ¿Sugerir una forma de detectar si la página está enmarcada?
Solución 2
Como no llegué a ninguna parte después de encontrar el comentario dejado en el Blog de IE Mobile (por Charles Morris - gerente de programa en el equipo de IE Mobile, en su propia publicación) Me veo obligado a agregar esta respuesta y afirmar que es:
Según lo diseñado (o al menos un error)
prc dijo :
con respecto al soporte de iframe: puedo crear un iframe, pero no puedo " mira afuera " el marco. " arriba " y " padre " ambos parecen referirse solo a el iframe en sí y no el más alto antepasado o antepasado inmediato como el la documentación sugiere que debería hacerlo. ¿Hay alguna manera de referirse a JavaScript? variables en el documento adjunto desde dentro de un iframe?
19 de diciembre de 2007 21:29
iemoblog dijo :
No, no puedes acceder a ninguna parte de la DOM de los padres de comandos en un iframe en IE Mobile.
20 de diciembre de 2007 12:12 PM
Otros consejos
El problema principal es que si el marco es de un dominio diferente, entonces el contenedor, entonces su JavaScript está protegido y no puede acceder al otro marco / contenedor.
Lo que puedes hacer es intentar comparar window
con window.top
y los posibles resultados son:
1. Son los mismos - > eres la ventana superior de la página
2. No son lo mismo - > usted no es la ventana superior de la página, hay una página de contenedor, en el mismo dominio que usted, que mantiene su ventana como un marco o iframe.
3. Se lanza una excepción de seguridad - > usted no es la ventana superior de la página, pero la ventana superior pertenece a otro dominio y no puede acceder a ella.
tal vez algo como esto:
try {
if (window == window.top)
return "I'm parent";
else
return "I'm a child of " + window.top.location;
} catch (e) {
return "I'm a child of something from another domain";
}