一个合理的请求:IE中的iframe表示加载进度?

时间:2008-11-17 19:55:29

标签: javascript internet-explorer iframe progress-bar onload

让我误解IE的一件事是,当它加载带有iframe的页面时,它会等到iframe完成加载,然后才会呈现页面。相比之下,Firefox将在iframe加载时呈现所有其他页面元素,如果iframe需要很长时间才能加载,这非常好,因为它会向用户提供页面正在进行的一些反馈。它还允许您在框架加载时显示“iframe加载”信息并将其交换到iframe的onload上。

所以,我想知道是否有人为此找到了解决方法。理想情况下,我希望看到一个跨浏览器解决方案,在页面上加载iframe时会显示一个progess bar。除此之外,我采用了一种实现iframe的方法,迫使IE首先渲染页面,然后加载iframe。

我见过几个有趣的jquery进度条,如: http://plugins.jquery.com/project/jQueryProgressBar

但是......(如果我错了,请纠正我,因为我的理解是不稳定的)......在我看来,jquery栏只能在DOM加载后呈现。在IE中,iframe内容在加载DOM之后才会显示,因此在该点显示进度条是无关紧要的。

我也尝试将iframe src设置为loading.htm然后onload将src切换到我想要的内容。遗憾的是,在最终的内容页面出现之前,IE仍然不会呈现页面(对我来说似乎很奇怪)。

帮我堆栈溢出,你是我唯一的希望。

2 个答案:

答案 0 :(得分:2)

如果您使用XmlHttpRequest加载页面,然后将文档内容替换为/何时加载,该怎么办?

<!-- jQuery example: -->

<div id='content'>Loading...</div>

<script type='text/javascript'>
$("#content").load(url);
</script>

答案 1 :(得分:1)

您可以在加载父窗口后使用JavaScript设置iframe的位置。

<body onload="document.getElementById('myIframe').location='someurl';">
    <iframe id="myIframe">
</body>

这是最基本的做法。