@ user247245:从您的问题来看,您(想要)如何使用 iframe 并不完全清楚。它会定期重新加载,还是在整个网页加载时重新加载一次?
解决方案 1:不同的背景颜色
如果您只想避免丑陋的白色,并避免过度复杂化。在 framecontents.html 文件的 HTML 标头中设置不同的背景颜色,如下所示:
<!DOCTYPE html>
<html style="background-color: #F48;">
这样,当CSS
文件加载、解析和应用时,背景不是#fff
.
解决方案 2:透明 iframe
虽然没有内容,但 iframe 应该根本不可见。解决方案:
<iframe src="/framecontents.html" allowTransparency="true" background="transparent"></iframe>
当然不要将它与解决方案1结合使用,你会在脚上开枪。
解决方案 3:预加载 iframe 页面
如果您稍后加载 iframe(例如用户单击链接),请考虑预加载其内容。将其隐藏在(父)页面顶部附近:
<iframe src="/framecontents.html" style="position: absolute; width: 0px; height: 0px"></iframe>
但我建议改用解决方案 2。
解决方案 4:如果做一个移动 Web 界面:
看看 jQuery Mobile 是如何做到的。我们构建了一个 Web 界面,感觉就像一个原生应用程序,因此无需重新加载闪烁。jQM 解决了这个问题。基本上做一个后台 ajax 调用来检索完整的 HTML 内容,然后提取(更准确地说body
是“页面” ),然后替换内容(如果你愿意,可以使用转换)。div
一直显示重新加载微调器。
总而言之,这感觉更像是一个移动应用程序:没有重新加载闪烁。其他解决方案是:
解决方案5:使用JS注入CSS:
请参阅jmva或http://css-tricks.com/prevent-white-flash-iframe/的回答。
解决方案6:使用JS注入CSS(简单版)
<script type="text/javascript">
parent.document.getElementById("theframe").style.visibility = "hidden";
</script>
<iframe id="theframe" src="/framecontents.html" onload="this.style.visibility='visible';"></iframe>
您当然可以省略该<script>
部分并添加style="visibility:hidden;"
到 iframe,但以上将确保该框架对禁用 JS 的访问者可见。实际上,我建议这样做,因为无论如何,99% 的访问者都启用了它,而且它更简单、更有效。