我有一个基于iframe的在线帮助系统多年来一直运作良好。使用IE8,它会调用一些调用location.toString()的javascripting。这个代码在IE6中运行良好。
具体来说,代码是:
var iss = parent.left.location.toString();
var isInd = iss.indexOf("indexframe");
我收到“拒绝权限”错误。我认为这个问题与跨域通信有关,我不确定我是否完全理解。整个包使用本地HTML和javascript文件在本地运行。我不是试图让一个域中的帧控制另一个域中的帧。或者,假设这是问题,我可能会偏离基础。
有人可以帮我理解解决这个问题需要做些什么吗?
答案 0 :(得分:1)
通常在访问另一个iframe的内容时,我会使用以下内容:
var f = document.getElementById('IdOfIFrame'),
d = f.contentDocument||f.contentWindow;
alert(d.location);
答案 1 :(得分:1)
如果iFrame和父文档位于同一个域中,则不应该出现该错误。它告诉我,这些文件属于不同的领域。
如果Iframe位于 www.mydomain.com 且文档位于 help.mydomain.com ,您将收到错误!页面必须认为它们位于完全相同的域中。
在这两个文件中你可以添加javascript设置域名:
document.domain = "mydomain.com";
Javascript将允许您在两个页面上放入主机域。这允许您跨框架进行通信。当然,如果页面位于不同的HOST域中,那么这将无效,javascript将引发错误。
答案 2 :(得分:-1)
如果您确实从您的站点访问了2个域,和您拥有这两个域,则可以创建一个xml文件,指定应该允许哪些域共享。见the spec document。这种选择性跨站点访问不仅仅支持Adobe(MS Silverlight for one)。这是Silverlight的support spec。