iframe在加载后立即卸载

时间:2014-06-02 20:28:23

标签: javascript jquery html css iframe

我一直在使用iframe将来自不同网站(在同一个域中)的内容嵌入到网页中。到目前为止,我的客户一直在使用Internet Explorer 7访问该站点,一切都运行得很好......他们点击一个按钮,更新iframe src属性并加载内容。

在最近的一些软件更改后,客户现在需要访问IE 8/9/10中的网页。然而,当他们点击任何这些IE的后续版本中的按钮时,客户端页面IS成功加载到iframe中,但仅在非常短的时间内(不到半秒)。基本上页面已加载,但随后立即卸载 - 我通过在窗口加载/卸载事件被触发时显示一些警报来测试这种情况。

我尝试过使用浏览器调试工具找不到问题的原因。我看不到与该问题有关的任何错误(或警告),并且该网站的其余部分正常运行。我知道在以后的浏览器版本中处理iframe的方式有一些变化,但我不确定这是否是我观察到的行为的原因。是否有可能更新的浏览器版本告诉iframe要卸载? 有没有人对可能导致这个问题的原因有任何想法(我甚至在这里的正确轨道上)?

非常感谢任何帮助。

您知道,此行为反映在Chrome和Firefox中(这些也会得到支持)。

编辑:


为了测试我一直在注入一个非常简单的html文件作为客户端页面,我仍然遇到完全相同的问题:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">     
        function clickFunction() {
            alert("Hello World!");
        }
    </script>
</head>
<body>
    <button id="myButton" onclick="clickFunction()">Click Me</button>
</body>
</html>

此html被注入嵌入我网页的iframe中。据我所知,iframe没有什么不寻常之处:

<iframe id='geode_iframe' style='width:100%;height:100%;left:0;top:0;position:fixed'></iframe>

单击我页面上的按钮时,以下代码用于设置iframe的src:

document.getElementById('geode_iframe').src='http://BI0002/IRSGeodeClient/Basic.html'

理论上这个操作应该相对简单,因此我认为我更不可能不知道iframe行为的某些变化。

1 个答案:

答案 0 :(得分:0)

我终于设法找出了问题的原因。嵌入iframe的面板实际上是两次创建的,我认为当我调用document.getElementById时,浏览器会让我感到困惑(因为我有两个具有相同id的面板)。 我不确定为什么会发生这种行为......也许IE7和IE10使用了不同的回发模型,我得到了额外的回发,导致创建代码再次执行。

非常感谢。