在可见时加载 iframe
Have iframe load when visible
我有一个页面,上面有大约100个视频(youtube)加载iframe。它们都在手风琴风格的菜单中, 我想知道是否有办法在手风琴打开或 iframe 在页面上可见时加载它们.现在它占用了太多内存并且页面滞后很多。
你尚未显示任何允许我们在代码中包含此内容的代码。
不要设置视频的 src,将其存储在数据中
<iframe src="about:blank" data-src="http://youtu.be/etc"></iframe>
使用任何触发手风琴的东西,$(this)是手风琴项目
var $iframe=$(this).find('iframe');
if ($iframe.data('src')){ // only do it once per iframe
$iframe.prop('src', $iframe.data('src')).data('src', false);
}
好的,所以它将如下所示:
.HTML
<div id="accordion">
<h3>Video 1</h3>
<div class="content" data-link="//www.youtube.com/embed/nlcIKh6sBtc">
<iframe width="200" height="200" src="" frameborder="0"></iframe>
</div>
<h3>Video 2</h3>
<div class="content" data-link="//www.youtube.com/embed/My2FRPA3Gf8">
<iframe width="200" height="200" src="" frameborder="0"></iframe>
</div>
<h3>Video 3</h3>
<div class="content" data-link="//www.youtube.com/embed/CevxZvSJLk8">
<iframe width="200" height="200" src="" frameborder="0"></iframe>
</div>
</div>
JavaScript
var elements = document.getElementsByClassName("content"), bubbles = false;
var observer = new WebKitMutationObserver(function (mutations) {
mutations.forEach(attrModified);
});
for(var i = 0; i < elements.length; i++){
observer.observe(elements[i], { attributes: true, subtree: bubbles });
}
function attrModified(mutation) {
var contentStyle = mutation.target.getAttribute("style");
var IsVisible = contentStyle.indexOf("block") != -1;
if(!IsVisible){
var $currentIframe = $(mutation.target).children("iframe");
$currentIframe.attr("src", "");
}
else{
var link = $(mutation.target).data("link");
var $currentIframe = $(mutation.target).children("iframe");
$currentIframe.attr("src", link);
}
}
$("#accordion").accordion();
示例:手风琴加载框架
如果要
执行此操作,可以在打开折叠项时触发的事件上设置 iframe 的 src 属性(指向视频)。我已经有一段时间没有使用手风琴了, 但很确定它有一个 init 事件.
对于那些正在寻找这个问题的答案的人来说,另一种解决方案是为内容添加延迟加载效果。 jQuery LazyLoad 任何库都可以用来实现相同的目的。图书馆也有例如。渲染YouTube视频。
相关文章:
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 使用Javascript(或jQuery)加载iframe内容
- Internet Explorer重新加载IFrame
- Fine Uploader-未收到来自已加载iframe的有效消息
- 使用本地生成的代码通过 JavaScript 加载 IFrame
- 加载iframe时激发的事件
- 动态渲染 .mht 文件,无需加载/iframe/嵌入
- 如何在选择列表项时重新加载iframe
- 如何使用JavaScript在iframe中重新加载iframe
- 在featherlight.js中延迟加载iFrame
- 实时在更改时重新加载iframe脚本
- 如何在不闪烁的情况下加载Iframe
- 如何按时间间隔重新加载Iframe内容,使其不会闪烁
- 设置 URL 以在 Django 模板中加载 iframe
- 在离开页面之前加载 iframe
- 加载 Iframe src,并从水平下拉菜单中进行选择
- 同时加载 iframe 并重置文档位置
- 单击按钮时重新加载 iframe 内容(本地 HTML)
- 单击元素时重新加载 iframe src
- 在可见时加载 iframe