Najpierw spójrz na poprawną odpowiedź z tego post. Wydaje mi się, że to może być twój problem.
Jeśli nie, to może ten szybki hack, który widziałem z innego post może pomóc.
var frame = $('<iframe>')
.attr('id', 'myIframe')
.addClass('someClass')
.attr('src', 'javascript:(function() {' +'document.open();document.domain=\'myDomain.net\';document.close();' + '})();');
.appendTo($('#someDiv'));
Nie jestem pewien, czy jest to istotne, ale znalazłem to również w Internecie link.
OK, aby odpowiedzieć na Twój komentarz. Funkcja javascript nie przypisuje źródła, ustawia domenę dokumentu, która najwyraźniej nie jest poprawnie wykonywana w I.E.
Sprawdź ten przykład link dla innego przykładu i objaśnienia.
Więc co chciałbym spróbować może być coś takiego ...
var wrapUpIframe = document.createElement("iframe");
wrapUpIframe.id = 'WrapUpDialog3';
wrapUpIframe.src = setSrc();
document.body.appendChild(wrapUpIframe);
function setSrc(){document.open();document.domain=\'dc.com\';document.close();return 'WrapUpDialog.html';}
Być może będziesz musiał bawić się z jak przywrócić rzeczywisty URL iframe po uruchomieniu funkcji, która ustawia domenę dokumentu. Ale z tego, co widzę, to może ci pomóc.
Miałem podobny problem, ale nie do końca ten sam problem, dlatego nie mogę podać dokładnej poprawki. Funkcja ustawiająca domenę dokumentu spowodowała, że pominąłem błąd odmowy dostępu.
Możesz również dodać to do głównego dokumentu, aby upewnić się, że domeny są zgodne.
<script type="text/javascript">
document.domain = 'dc.com';
</script>
Chciałam również dodać link jakiegoś wyjaśnienia na jawnie ustawienie document.domain że używałem wcześniej. Pomogło mi to w przeszłości. Szczególnie ten cytat ...
Explicitly setting the value indicates intent to "cooperate" with a script on another subdomain (under the same parent domain).
Dor, możesz mieć problem z regulacją czasu. Znalazłem kod (tutaj), który właśnie przetestowałem, który działa dla mnie.Upewnia się, że element iframe został wczytany przed próbą uzyskania dostępu do contentWindow.
var iframe = document.createElement("iframe");
iframe.src = "WrapUpDialog.html";
if (iframe.attachEvent){
iframe.attachEvent("onload", function(){
alert("Local iframe is now loaded.");
});
} else {
iframe.onload = function(){
alert("Local iframe is now loaded.");
};
}
document.body.appendChild(iframe);
var iframeWindow = iframe.contentWindow || iframe.contentDocument.parentWindow;
W jakiej przeglądarce występuje takie zachowanie? Po wpisaniu kodu do debuggera Chrome mogę uzyskać dostęp do "el.contentWindow" dobrze. Zauważ, że nie tylko domena musi się zgadzać, ale pełne pochodzenie, możesz więc spróbować porównać 'document.location.origin' z dwóch okien. –
@nhaldimann pracuję z IE9 –
Zostało tutaj odpowiedzi: http://stackoverflow.com/questions/364952/jquery-javascript-accessing-contents-of-an-iframe Bertrand – Bertrand