将 iFrame CSS 设置为显示:加载期间无

Posted

技术标签:

【中文标题】将 iFrame CSS 设置为显示:加载期间无【英文标题】:Setting iFrame CSS to display:none during load 【发布时间】:2012-09-21 14:43:59 【问题描述】:

我有这个:

<div class="upload_slide">
    <iframe class="upload_iframe" style="visibility:hidden;"></iframe>
</div>

如果我随后将一些文件发布到 iFrame 并将 .upload_slide 设置为 display:none;,而它正在加载,这会影响 iFrame 的加载或检测它何时完成加载吗?

【问题讨论】:

【参考方案1】:

不,iFrame 的加载和加载检测不应因将显示设置为无而受到影响。

CSS 只是为了样式,它没有影响 DOM 的能力。

【讨论】:

&lt;img&gt;(或其任何父级)上设置display:none 将阻止它加载。 CSS 可以 影响 DOM,但很可惜,不适用于 &lt;iframe&gt;s。 这不是真的。无论可见性如何,图像都会加载,除非您使用的是loading="lazy"。然而,CSS 背景图像确实对可见性做出反应,尽管这种行为在浏览器中并不是完全标准的。 我实际上来到这里是因为我发现在 chrome 中的 iframe 上设置 'display: none' 会重新加载其 url。【参考方案2】:

应该没有问题,但如果有的话,一个好的技巧是将元素移出屏幕而不是隐藏它。您可以创建一个类,如

.offscreen
    position: absolute;
    left: -5000px;

您可以根据需要添加和删除。

【讨论】:

display:none 使 Firefox 不再从 iframe 触发打印对话框。很好的答案。【参考方案3】:

Firefox 目前确实存在显示问题:无:

一些浏览器假定当“display:none”应用于被替换的元素(如 Flash 或 iframe)时,不再需要该元素的视觉信息。因此,如果元素稍后由 CSS 显示,浏览器实际上将重新创建可视数据表单。

我想 iframe 默认设置为“display:none;”使浏览器跳过 html 的呈现,因此标签没有任何尺寸。我会将可见性设置为“隐藏”或将其置于页面之外,而不是使用“display:none;”。

史蒂文·帕利戈

Link

【讨论】:

我猜这发生在带有 chrome 59 的 iframe 中。某些表格边框虚线样式未加载,如果 iframe 设置为 display:none,并且您打印 iframe。【参考方案4】:

不..一点也不..

CSS - display:nonevisibility:hidden 仅表示浏览器不向用户显示 iframe 内容。

但该功能可以正常工作,没有任何问题。

【讨论】:

【参考方案5】:

据我所知,它应该可以正常工作。我一直在使用隐藏的 iframe 加载内容,但没有遇到任何问题。

也就是说,我知道有些浏览器试图通过不加载隐藏的图像来提高效率,所以有些浏览器(尤其是移动浏览器)可能会对 iframe 做同样的事情。

【讨论】:

以上是关于将 iFrame CSS 设置为显示:加载期间无的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery/CSS 进行跨域 iframe 控制/加载

我想使用 css 将 iframe 设置为背景

DIV挡住iframe显示,怎么修改CSS

Javascript / CSS:设置(firefox)iframe的缩放级别?

PHP 标头重定向不会在 IE 中重新加载 <iframe>

Wordpress:仅在点击时加载 iframe