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?

¿Fue útil?

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";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top