【问题标题】:communication between an iframe and the page its part of through javascript in ie8通过 ie8 中的 javascript 在 iframe 与其所属的页面之间进行通信
【发布时间】:2012-02-09 02:37:54
【问题描述】:

我见过很多这样的问题,但没有发现任何似乎对我的具体情况有帮助的东西,所以如果这个问题似乎重复,我深表歉意。

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

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

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

总体而言,我们将不胜感激有关如何解决此问题的任何帮助。我想知道是否存在与浏览器设置有关的安全问题,或者它是否与我的编码方式有关。

提前致谢

【问题讨论】:

    标签: javascript iframe internet-explorer-8


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我不断收到网页错误详细信息用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;GTB7.2;InfoPath.2;.NET CLR 2.0.50727;InfoPath .1;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)时间戳:2012 年 1 月 12 日星期四 20:05:20 UTC 消息:访问被拒绝。行:103 字符:5 代码:0 URI:....
      • 酷。您是否尝试过确保src= 和网页的 URL 都在同一个域名上,就像我的回答所说的那样?
      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      相关资源
      最近更新 更多