2010-12-12 19 views
5

Obecnie próbuję załadować stronę w subdomenie do mojej głównej domeny, używając elementu iframe, i wywołać subdomenie funkcję javascript (gdy dom -ready) w mojej głównej domenie, aby główna domena mogła zmienić rozmiar elementu iframe zgodnie z wysokością zawartości. Oto przykładdocument.domain problemy z "odmową zgody" z IE8

www.mysite.com (kod wewnątrz strony):

<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> 

A dla mojej drugiej stronie, test.mysite.com, oto kod w obrębie strony:

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

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

Wydaje się to działać dobrze na firefox, safari i chrome, ale nie na IE8. IE8 zawsze daje mi błąd "odmowa zgody" podczas wykonywania połączenia window.parent.doSomething()

Nie mogę przetestować na IE7 lub IE6, aby sprawdzić, czy problem nadal występuje, ale czy ktoś napotkał ten problem? Czy coś przeoczyłem w ten sposób, w jaki układam kod?

Dzięki za pomoc chłopaki.

+0

możliwy duplikat [Odmowa uprawnień IE iFrame] (http://stackoverflow.com/questions/2953158/permission-denied-ie-iframe) – alex

Odpowiedz

1

Oto wątek z wieloma uwagami o kilku problemach:

Uwaga że nie testowałem tego, jak nie mam IE. Niestety, ani wydaje się przekonujące z mojej perspektywy - spróbuj i zobacz, czy to działa dla Ciebie.

więc z powyższego posta, wydaje się, że są dwie możliwe przyczyny:

  • Słupek które podtrzymuje IE wymaga, aby wszystkie dokumenty mają tę samą domenę. Jeśli masz więcej dokumentów (iframes i podobnych), spróbuj je usunąć i przetestować za pomocą tych dwóch (głównych i iframe).
  • Zobacz ostatni komentarz w poście - może to być po prostu stan wyścigu. Spróbuj umieścić go w setTimeout z kilku sekundach oczekiwania po obie strony ustawionych document.domain do tej samej wartości
2

document.domain „brak dostępu” problemy z IE8 SOLVED !!

Tak jak powiedział inny użytkownik, ustaw limit czasu o kilka sekund po ustawieniu właściwości document.domain, gdzie element iframe znajduje się na stronie, a następnie wywołaj drugą stronę w elemencie iframe.

trzeba ustawić wartość SRC swojego iframe, kilka sekund po ustawieniu document.domain na IE8 i będzie działać ..

1

wpadłem w tym samym numerze i korzystania z limitu czasu nie rozwiązać problem.

Ponieważ miałem inną witrynę z podobnymi ustawieniami, w której wszystko działało poprawnie, otworzyłem oba okna obok siebie i zauważyłem na pasku stanu na dole, że jeden był pod "Lokalnym intranetem", a drugi pod "Zaufanymi witrynami". ".

To doprowadziło mnie do innego punktu do sprawdzenia: upewnij się, że obie subdomeny pojawiają się w tej samej strefie bezpieczeństwa w Internetowych Właściwościach Zabezpieczenia IE! Jeśli tego nie zrobią, wystąpi błąd "Odmowa uprawnień".