javascript - 如何在考虑缓存的情况下延迟加载 iframe

标签 javascript jquery iframe lazy-loading

我以前用过这个方法。

<iframe data-src="https://youtube.com/...?autoplay=1"></iframe>

在使用 javascript 的事件中,我将 data-src 更改为 src 并且视频开始播放。

我遇到了浏览器缓存问题,当返回浏览器时,视频会在后台自动播放(我为实际的 iframe 加载了缩略图)。因此,我切换到一种方法,我只在评论中加载 iframe

<!--<iframe src="https://youtube.com/...?autoplay=1"></iframe>-->

然后点击删除评论。我看到谷歌在谷歌加号上使用了这个确切的方法。问题现在再次缓存,这次是服务器端。我认为 cloudflairs auto minify 很可能正在删除 HTML 注释。

快速搜索显示我可能无法将评论标记为它们不会被 cloudfliar 删除。最重要的是,如果这是一个 wordpress 插件,那么这个问题仍然与各种删除 HTML 注释的缓存插件有关。

那么现在我的问题是。有没有更好的方法在没有 HTML 注释的情况下延迟加载 iframe?我仍然喜欢以某种方式将 iframe 存储在适当的位置……就像我写这篇文章一样,我可以存储数据以在一些随机标记 json 编码或其他内容中构建 iframe,然后在点击时构建 iframe。

最佳答案

Just came across this.

所以这是 <script>标记可能是一个很好的解决方案,不需要修改数据,但会阻止浏览器对其进行任何操作。

HTML

<script type="text/html" class="arve-lazyload">
<iframe src="https://youtube.com/...?autoplay=1"></iframe>
</script>

jQuery

    var lazyloaded_iframe = $('.arve-lazyload');

    $( lazyloaded_iframe.html() ).insertAfter( lazyloaded_iframe );

关于javascript - 如何在考虑缓存的情况下延迟加载 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194836/

相关文章:

javascript - 无法使用 python selenium 登录 namecheap

javascript - 普通 JavaScript 中的 jQuery 更改方法?

javascript - 我们可以在不使用 graph api 的情况下对 azure ad 中的用户进行身份验证吗

javascript - jQuery 获取自定义事件的参数值

jquery - 如何在某些 bxslider 子元素上设置类?

javascript - 与 jquery 一起使用的良好模板引擎

iframe - 如何在 Confluence 页面中嵌入 iframe?

facebook - 基于 Open Graph iframe 的视频嵌入支持?

javascript - 带有嵌套 iframe 的 Jquery Auto Height iframe

javascript - 如何使用 Three.js 使用鼠标旋转 3D 对象而不将其旋转到屏幕外?