首先看一下这个帖子中的正确答案。在我看来,那可能是你的问题所在。
如果不是那样,也许这篇帖子中的快速Hack会有所帮助。
var frame = $('<iframe>')
.attr('id', 'myIframe')
.addClass('someClass')
.attr('src', 'javascript:(function () {' +'document.open();document.domain=\'myDomain.net\';document.close();' + '})();');
.appendTo($('#someDiv'));
不确定这是否相关,但我在网上也发现了这个链接。
好的,针对您的评论做出回应。JavaScript函数并不是在分配源,而是设置文档域,这在IE中显然没有正确完成。
查看此链接以获取另一个示例和解释。
因此,我会尝试类似以下的操作...
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';}
在运行设置文档域的函数后,您可能需要尝试一下如何返回iframe的实际url。但是从我的观察中看来,这可能适用于您。
我遇到了类似的问题,但不完全相同,这就是我不能给您提供准确修复方法的原因。设置文档域的函数使我摆脱了访问被拒绝的错误。
您还可以将此添加到主文档中,以确保域匹配。
<script type="text/javascript">
document.domain = 'dc.com';
</script>
我还想添加一个
链接,讲解一下我以前使用过的显式设置document.domain的内容。这对我过去很有帮助。特别是这句话...
显式设置值表示意图“合作”与同一父域下的另一个子域中的脚本。
Dor,你可能遇到了时间问题。我找到了一些代码(在这里),我刚刚测试了一下,对我起作用。它确保在尝试访问contentWindow之前加载iframe。
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;
el.contentWindow
。请注意,不仅需要匹配域名,还需要匹配完整的来源,因此您可以尝试比较两个窗口的document.location.origin
。 - Nik HaldimannWrapUpDialog3
是什么?如何访问contentWindow
?如果您能发布一个更完整的示例,那么我们可能能够更好地帮助您。 - Martijn de Milliano