IE8的document.domain“权限被拒绝”问题

时间:2010-12-12 23:57:02

标签: javascript dom internet-explorer-8

我目前正在尝试使用iframe在子域中加载页面到我的主域,并让子域在我的主域中调用javascript函数(当dom-ready时),以便主域可以根据内容的高度调整iframe的大小。 这是一个例子

www.mysite.com(页面内的代码):

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

对于我的其他网站test.mysite.com,这是页面中的代码:

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

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

这似乎适用于firefox,safari和chrome,但不适用于IE8。 在拨打电话window.parent.doSomething()

时,I​​E8总是给我一个“权限被拒绝”的错误

我无法在IE7或IE6上测试以查看问题是否仍然存在,但是有没有人遇到过此问题?我是否错过了我正在编写代码的方式?

感谢帮助人员。

3 个答案:

答案 0 :(得分:2)

document.domain“权限被拒绝”问题IE8已解决!!

就像其他用户说的那样,只需设置iframe在页面上的document.domain后几秒钟的超时,然后在iframe中调用你的第二页。

你需要设置你的iframe的SRC值,在IE8上设置document.domain几秒钟之后就可以了。

答案 1 :(得分:1)

这是一个关于一些可能的问题的很多评论的帖子:

注意我没有测试这个,因为我没有IE。不幸的是,似乎没有从我的角度来说是令人信服的 - 尝试一下,看看它是否适合你。

所以,从上面的帖子看,似乎有两个可能的原因:

  • 该帖子声称IE要求所有文件具有相同的域名。如果您有更多文档(iframes等),请尝试删除它们并仅使用这两个(主要和iframe)进行测试
  • 查看帖子中的最后一条评论 - 它可能只是一个竞争条件。在两个页面都将setTimeout设置为相同的值后,尝试将其放入document.domain并等待几秒钟

答案 2 :(得分:1)

我遇到了同样的问题并且使用超时并没有解决问题。

由于我有另一个具有类似设置的网站,所有工作正常,我并排打开两个窗口,并在底部的状态栏中注意到一个位于“本地Intranet”下,而另一个位于“可信站点”下

这让我有了另一个要检查的地方:确保两个子域都出现在IE的Internet安全属性的同一个安全区中!如果他们不这样做,那么你将有一个“权限被拒绝”的错误。