如何使IE 8在加载元素完成之前不向iFrame显示任何内容

How to make IE 8 not to show anything to an iFrame before onload element is finished?

本文关键字:iFrame 显示 任何内 IE 何使 加载 元素      更新时间:2023-09-26

我想隐藏iFrame中加载的网站元素。脚本和站点可能需要一段时间,因此要求iFrame内容只有在修改后才能显示。

我使用onload事件来执行隐藏元素的脚本。我可以访问iFrame内容(它在同一个域上,但不在同一服务器/网络上)。

function frameLoaded() {
sleep(3000); //simulating the time the script needs
var leftDiv = window.frames.testFrame.document.getElementById("leftcol");
leftDiv.style.display = "none";
}

简单的睡眠功能:

function sleep(milliSeconds){
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}

当第一次加载带有iFrame的网站时,会显示滚动条和一些样式元素,但没有内容文本:

http://img651.imageshack.us/img651/5082/beforeu.png

脚本完成后,页面将按原样显示(天青色的div将隐藏):

http://img51.imageshack.us/img51/6806/afterq.png

当脚本工作时,不应该显示任何内容。一个空的iframe或整个网站等待加载完成就足够了。

您可以在父页面加载中隐藏<iframe id="iframe" style="display: none">,并在iframe的onload事件中将其设置为可见:

function frameLoaded() {
  sleep(3000); //simulating the time the script needs
  var leftDiv = window.frames.testFrame.document.getElementById("leftcol");
  leftDiv.style.display = "none";
  document.getElementById("iframe").style.display = 'block';
}

BTW:这个睡眠功能应该扔掉。