通过ie8中的javascript在iframe和它所属的页面之间进行通信

communication between an iframe and the page its part of through javascript in ie8

本文关键字:之间 通信 javascript 中的 ie8 iframe 通过      更新时间:2023-09-26

我看到了很多这样的问题,但没有发现任何对我的具体情况有帮助的问题,所以如果这个问题看起来重复,我很抱歉。

我有一个网站www.foo.com,里面有一个iframe。当我点击foo.com中的一个标签时,会调用一个javascript函数,将一个新图像传递给iframe以显示用户。iframe与其"父级"之间的通信似乎在除RANDOMIE8PAGES之外的所有浏览器上都能正常工作。我收到以下错误消息"访问被拒绝",浏览器指向已激活的功能。下面是该网站的一段代码,看看它是如何工作的。

iframe:

<iframe scrolling="no" src="foo.com/bar" id="ifram" name="ifram"></iframe>

a标签:

javascript:

if($(this).val() == '242'){
    document.getElementById('ifram').style.border='0px';
    document.getElementById('ifram').style.background = "url('../product_images/uploaded_images/Flag.jpg')";
    document.frames.ifram.document.body.style.backgroundColor="transparent"; 

这只是一个代码片段,不包括获取图像的ajax调用的整个过程,但不确定ajax是否是问题的一部分。我在firefox中得到一个未定义的错误,但函数仍然会启动。我想我只需要为firefox使用window.frames。

总的来说,如果能就如何解决这一问题提供任何帮助,我们将不胜感激。我想知道是否存在与浏览器设置有关的安全问题,或者这是否是我编码的一部分。

提前感谢

需要注意的是,如果您的iframe标记位于位于http://www.foo.com的页面上,但iframe指向http://foo.com,则会被视为沙盒违规,您将被拒绝访问。请确保您指向的域与页面所在的域相同。您也可以在iFrame-src标记中使用相对URL,这样您就可以将其更改为src="bar.php"(不包含任何域信息)。

您不需要在document.frames.ifram.document.body.style.backgroundColor = "#ccc";之前使用document.frames。仅ifram.document.body.style.backgroundColor = "#ccc";即可。