javascript - 加载后立即卸载 iframe

标签 javascript jquery html css iframe

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

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

我已经尝试使用浏览器调试工具来查找问题的原因,但没有成功。我看不到与该问题相关的任何错误(或与此相关的警告),网站的其余部分运行正常。我知道在更高版本的浏览器中处理 iframe 的方式发生了一些变化,但我不确定这是否是我观察到的行为的原因。较新的浏览器版本是否可能告诉 iframe 卸载? 是否有人对可能导致此问题的原因有任何想法(我在这里是否走在正确的轨道上)?

如有任何帮助,我们将不胜感激。

请注意,Chrome 和 Firefox 都反射(reflect)了这种行为(它们也将受到支持)。

编辑:


为了测试,我注入(inject)了一个非常简单的 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 被注入(inject)到嵌入在我的网页上的 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 行为的某些变化。

最佳答案

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

还是谢谢你

关于javascript - 加载后立即卸载 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24002716/

相关文章:

python - 使用 Python 发送 HTML 电子邮件

html - Bootstrap 3 网格行跨度

javascript - spring mvc错误ajax [object Object]返回@ResponseBody Map时

javascript - 电子邮件正则表达式错误地接受逗号

php - 对一组坐标进行反向地理编码

javascript - 多页面应用 React Router v4

jquery - jqgrid 的通用搜索字段

javascript - 如何打印嵌套对象的所有值

需要 JQuery 弹出窗口帮助

javascript - 如何仅在正文(而不是页眉和页脚)上启用反弹过度滚动?