Ответ 1
Сначала взгляните на правильный ответ из этого сообщения . Мне кажется, что это может быть вашей проблемой.
Если это не так, возможно, этот быстрый хак, который я видел из другого сообщения , может помочь.
var frame = $('<iframe>')
.attr('id', 'myIframe')
.addClass('someClass')
.attr('src', 'javascript:(function () {' +'document.open();document.domain=\'myDomain.net\';document.close();' + '})();');
.appendTo($('#someDiv'));
Не уверен, что это актуально, но я также нашел это в Интернете ссылка.
ОК, чтобы ответить на ваш комментарий. Функция javascript не назначает источник, он устанавливает домен документа, который, по-видимому, не выполняется правильно в I.E.
Посмотрите эту ссылку для другого примера и объяснения.
Итак, что бы я попробовал, может быть что-то вроде этого...
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';}
Возможно, вам придется поиграть с тем, как вернуть фактический url для iframe после запуска функции, которая устанавливает домен документа. Но из того, что я вижу, это может сработать для вас.
У меня была аналогичная проблема, но не совсем такая же проблема, поэтому я не могу дать точное решение. Функция, устанавливающая домен документа, была тем, что заставило меня пройти через отказ в доступе.
Вы также можете добавить это в свой основной документ, чтобы действительно убедиться в совпадении доменов.
<script type="text/javascript">
document.domain = 'dc.com';
</script>
Я также хотел добавить ссылку для некоторого объяснения явной установки document.domain, который я использовал ранее. Это было полезно для меня в прошлом. В частности, эта цитата...
Явная установка значения указывает на намерение "сотрудничать" с script в другом поддомене (в том же родительском домене).
Дор, у вас может быть проблема с синхронизацией. Я нашел код (здесь), который я только что проверил, который работает для меня. Это гарантирует, что iframe загружен, прежде чем вы попытаетесь получить доступ к контенту 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;