我只是想补充一点,不使用 Javascript 的另一种方法是让微调器出现在 iframe 后面,并为 iframe 提供最初透明的背景;只要iframe 的内容有背景颜色,它就会在加载后覆盖微调器。
如果您的 iframe 是“一次性”的,这是一个很好的方法,即它只加载一次嵌入的内容并且不包含可点击的链接,或者如果您不关心在初始内容后显示微调器已加载。*
有两种简单的方法可以做到这一点:
CSS 背景
HTML:
<div class="iframe_container">
<iframe src="http://example.org"></iframe>
</div>
CSS:
.iframe_container {
background-image: url('path/to/spinner.gif');
background-position: center;
background-repeat: no-repeat;
}
.iframe_container iframe {
background: transparent;
}
基本上,微调器是.image_container 的背景,位于中心,并且可见,因为 iframe 的背景最初是透明的。当 iframe 内容加载时,它会覆盖图像,即使发生错误也是如此。
Z-索引
HTML:
<div class="iframe_container">
<img class="spinner" src="path/to/spinner.gif" />
<iframe src="http://www.example.org"></iframe>
</div>
CSS:
.iframe_container {
position: relative;
}
.iframe_container .spinner {
position: absolute;
top: 50%;
left: 50%;
}
.iframe_container iframe {
background: transparent;
z-index: 1;
}
在这种情况下,我们将微调器嵌入为特定元素(您可能需要为 Bootstrap 微调器等执行此操作),使用 CSS 定位。在这种情况下,iframe 覆盖了图像,因为它被赋予了 z-index(如果其他元素具有 z-indexes,您可能需要使用更大的数字),但技巧基本相同。
注意事项
只要微调器在技术上仍然在后台不会打扰您,这对于单个页面加载 iframe 或当您只关心第一次加载时非常有用。
如果您希望您的网站支持禁用 Javascript 的用户,这也是一个很好的技巧,因为他们不会留下不会消失的微调器。
*如果您想通过 Javascript 重新使用微调器,您仍然可以使用 z-index 选项,通过将微调器的 z-index 设置为高于 iframe 的 z-index,如下所示:
var e = getElementById('my_iframe');
e.onload = function() {
var e = getElementById('my_spinner');
e.style.zIndex = 0;
}
e.onunload = function() {
var e = getElementById('my_spinner');
e.style.zIndex = 100;
}
卸载时将微调器推到 iframe 上方(源已更改)并在加载时再次推到 iframe 后面(新内容可见)。