2010-12-12 14 views
5

Actualmente estoy intentando cargar una página dentro de un subdominio, en mi dominio principal, usando un iframe, y hacer que el subdominio llame a una función de JavaScript (cuando dom -preparado) dentro de mi dominio principal, de modo que el dominio principal pueda cambiar el tamaño del iframe de acuerdo con la altura del contenido. He aquí un ejemplodocument.domain problemas de "permiso denegado" con IE8

www.mysite.com (código dentro de la página):

<script type="text/javascript"> 
document.domain = "mysite.com"; 
function doSomething() { 
    //do something 
} 
</script> 
<iframe id="mytestid" src="test.mysite.com" height="0" width="900"></iframe> 

Y para mi otro sitio, test.mysite.com, aquí está el código dentro de la página:

<script> 
document.domain = "mysite.com"; 

$(document).ready(function() { 
    window.parent.doSomething(); 
}); 
</script> 

Esto parece funcionar bien para Firefox, Safari y Chrome, pero no para IE8. IE8 siempre me da un "permiso denegado" error al hacer la llamada window.parent.doSomething()

no he podido probar en IE6 o IE7 para ver si el problema persiste, pero nadie ha encontrado con este problema? ¿Me he perdido algo con la forma en que estoy diseñando el código?

Gracias por la ayuda chicos.

+0

posible duplicado de [Permiso denegado IE iFrame] (http://stackoverflow.com/questions/2953158/permission-denied-ie-iframe) – alex

Respuesta

1

Aquí hay un hilo con un montón de comentarios acerca de algunos problemas posibles:

Nota que no probar esto, ya que no tengo IE. Desafortunadamente, ni parecen ser convincentes desde mi punto de vista, pruébalo y mira si te funciona.

Por lo tanto, desde el post anterior, parece que hay dos causas posibles:

  • El puesto alega IE exige que todos los documentos para tener el mismo dominio. Si tiene más documentos (iframes y demás), intente eliminarlos y probarlos con solo estos dos (principal e iframe)
  • Vea el último comentario en la publicación: podría tratarse simplemente de una condición de carrera. Trate de poner en un setTimeout con unos pocos segundos de espera después de ambas páginas se han fijado document.domain al mismo valor
2

document.domain “permiso denegado” problemas con IE8 SOLUCIONÓ !!

al igual que otro usuario dijo, simplemente establezca un tiempo de espera de un par de segundos después de establecer document.domain donde el iframe está en la página, y luego llame a su segunda página dentro del iframe.

debe configurar el valor SRC de su marco flotante, un par de segundos después de que ha establecido document.domain en IE8 y que va a funcionar ..

1

me encontré en el mismo número y el uso de un tiempo de espera no lo hizo resolver el problema

Como tenía otro sitio con configuraciones similares donde todo funcionaba bien, abrí ambas ventanas una al lado de la otra y noté en la barra de estado en la parte inferior que estaba debajo de "Intranet local" mientras que la otra estaba debajo de "Sitios de confianza" ".

Esto me llevó a otro punto para comprobar: ¡asegúrese de que ambos subdominios aparezcan en la misma zona de seguridad en Internet Security Properties de IE! Si no lo hacen, entonces tendrá un error "Permiso denegado".