【问题标题】:Iframe src set dynamically through JavaScript is being executed twice on Internet Explorer通过 JavaScript 动态设置的 iframe src 在 Internet Explorer 上执行了两次
【发布时间】:2011-03-01 18:26:44
【问题描述】:

我遇到了一个非常烦人的 IE 问题。基本上我需要使用 JavaScript 设置 IFrame 的源,但是在每次调用期间源文档被执行两次而不是一次。

下面贴上简化的HTML代码(我把它简化了,以便读者快速理解。源是通过JavaScript设置的,因为它会包含动态内容):

<html>
<head>
<title>Iframe test</title>
</head>
<body>

<iframe id="testIframe" scrolling="no" frameborder="0" src="" width="800" height="600"></iframe>

<script language="JavaScript">
    document.getElementById("testIframe").src = "http://localhost/test.php";
</script>

</body>
</html>

在这个例子中,test.php 在本地数据库中插入一条记录。每当使用 IE 调用上面的页面时,大多数情况下都会插入两行(有时只插入 1 行,但这不是常态)。我在 Chrome 和 Opera 上测试了相同的脚本,它在它们上正常工作,所以这一定是 IE 问题。

如果直接在 iframe 标记内设置 src IE 开始正常运行,但是我需要能够使用 javascript 构建 URL。

有人遇到过这个问题吗?有人知道解决方案/解决方法吗?

感谢和问候 皮埃尔

【问题讨论】:

  • 您是在脚本中创建 IFrame 标记吗?您是否在 DOM 中做任何其他事情,例如移动它?您使用的是 Lightbox 之类的对话框还是它的同事之一?
  • 请显示完整代码,您可能希望使用 XHR 方法 (Ajax) 而不是 iframe。
  • 首先感谢您的 cmets。 @Pekka,如上所示,正在 HTML 文档中创建 IFrame 标记,我只使用纯 HTML(和一行 JavaCcript)。 @meder。这是一个完整的工作示例(所以它是一个完整的代码)。基本上,由 JavaScript 设置的源由 IE 执行两次。 XHR 方法在我的场景中是不可能的,因为 src 将是一个远程位置并且 Ajax 不支持。
  • 奇怪。您可以尝试将 javascript 放入 onload 看看是否有任何改变?

标签: javascript internet-explorer dom iframe


【解决方案1】:

我设法解决了这个问题。基本上我现在正在使用

window.frames['testIframe'].document.location.href

而不是

document.getElementById("testIframe").src

源文档只被点击一次。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,但在我的情况下,原因是 IE10。我动态设置到 IFRAME 的 src 被打开了两次。我通过将其包含在以下部分中解决了这个问题:

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9;">
    

    【讨论】:

      【解决方案3】:

      把脚本放在

      <head> </head>
      

      不在

      <body></body>
      

      这样做的原因如下,它会运行一次iframe并绘制它,然后因为脚本跟随,它会再次运行它。有同样的问题,放弃了 iframe,因为搜索引擎要求你不要使用 iframe。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 2011-09-03
        • 1970-01-01
        • 2015-05-03
        • 2010-12-14
        • 1970-01-01
        • 2010-11-29
        相关资源
        最近更新 更多