在Internet Explorer浏览器中,通过JavaScript动态设置Iframe的src会被执行两次

3
我遇到了一个非常烦人的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或其同行的对话框? - Pekka
1
请展示完整的代码,您可能想使用XHR方法(Ajax)而不是iframe。 - meder omuraliev
首先感谢您的评论。@Pekka,如上所示,IFrame标签是在HTML文档中创建的,我只使用了纯HTML(和一行JavaScript代码)。@meder。这是一个完全可用的示例(因此它是完整的代码)。基本上,由JavaScript设置的源代码会被IE执行两次。在我的情况下,XHR方法不适用,因为src将是远程位置,而Ajax不支持该功能。 - Pierre Grima
奇怪。你能否尝试将JavaScript放入“onload”中,看看是否会改变任何内容? - Pekka
请看: https://dev59.com/B2cs5IYBdhLWcg3w8oXK - A. Binzxxxxxx
3个回答

11

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

window.frames['testIframe'].document.location.href
代替
document.getElementById("testIframe").src

并且源文档仅被访问一次。


0

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

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

-1
将脚本放入


<head> </head>

不在其中
<body></body>

以下是原因,它会运行iframe并将其绘制出来,然后由于脚本跟随,它将再次运行。有过同样的问题,放弃了iframe,因为搜索引擎要求您不要使用iframe。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接