【发布时间】:2013-02-06 18:31:05
【问题描述】:
我通过以下方式动态创建 IFRAME:
var wrapUpIframe = document.createElement("iframe");
wrapUpIframe.id = 'WrapUpDialog3';
wrapUpIframe.src = 'WrapUpDialog.html';
document.body.appendChild(wrapUpIframe);
动态创建后,我的document.domain 将从Servername.dc.com 缩短为仅dc.com,
但是当我尝试访问 contentWindow 时,我收到了访问被拒绝错误:
document.getElementById("WrapUpDialog3").contentWindow.SomeFunction();
注意:当我在 HTML 中静态定义 IFRAME 时,它可以正常工作。
我还尝试通过以下方式更改我的 IFRAME document.domain:
WrapUpDialog3.document.domain = dc.com;
我检查了document.domain 和我的 IFRAME 域,它们都是相同的。
我能做什么?
我正在使用 IE9。
【问题讨论】:
-
在什么浏览器中你会得到这种行为?如果我在 Chrome 调试器中输入你的代码,我可以访问
el.contentWindow很好。请注意,不仅需要匹配域,还需要匹配完整的来源,因此您可以尝试比较两个窗口的document.location.origin。 -
@nhaldimann 我使用 IE9
-
这里已经回答了这个问题:stackoverflow.com/questions/364952/… Bertrand
-
@BertrandLefort 但他说起源是一样的。
-
什么是
WrapUpDialog3?您如何访问contentWindow?如果您可以发布一个更完整的示例,那么我们可能会为您提供更好的帮助。
标签: javascript internet-explorer iframe dynamic access-denied