20

我知道有一些工具和技术可以延迟 javascript 的加载,但是我有一个 iframe,我想延迟加载直到页面的其余部分完成下载和渲染(iframe 处于隐藏状态,不会直到有人点击页面上的特定选项卡才会显示。有没有办法延迟 iframe 的加载?任何建议将不胜感激。谢谢!

4

11 回答 11

15

使用 jquery 很容易!

要么将加载 iframe 的代码包含在 a 中$() ,要么使用$(document).ready(function(){}) 它们两者都是相同的,并且会在 DOM 准备好后执行您的代码!

例如

$(document).ready(function(){
    $('iframe#iframe_id').attr('src', 'iframe_url');    
});

更多信息请访问http://www.learningjquery.com/2006/09/introducing-document-ready

于 2009-10-19T08:30:44.000 回答
10

不知道是否需要在没有 javascript 的情况下运行。但最好的方法是直接在 iframe 之后更改 src:

<iframe id="myIframe" src="http://.." />
<script type="text/javascript">
  var iframe = document.getElementById('myIframe').src = iframe.src;
  iframe.src = '';
  document.onload =  function(){iframe.src = src;}
</script>

使用 $(document).ready 将在构建 DOM 树之后直接开始渲染你的 iframe,但在你这边的所有内容被加载之前,所以我认为这不是你想要的。

jquery有事件.load,和onload一样(加载完所有资源之后)

$(window).load(function(){  iframe.src = src; }
于 2009-10-19T14:45:39.100 回答
8

我不明白为什么每个人都将 JAVASCRIPT 与 JQUERY 混淆,但是......

纯 JS 解决方案如下:(基本上它会等待构建 DOM,然后加载页面中的所有 iframe)。

<iframe src="" data-src="YOUR ACTUAL iFRAME URL">
<script type="text/javascript">
      function load_iframes() {
var vidDefer = document.getElementsByTagName('iframe');
for (var i=0; i<vidDefer.length; i++) {
if(vidDefer[i].getAttribute('data-src')) {
vidDefer[i].setAttribute('src',vidDefer[i].getAttribute('data-src'));
} } }
      document.addEventListener("DOMContentLoaded", function(event) {
         load_iframes();
      });
    </script>

注意:小心使用 document.load 事件。任何有问题或必须花费 1 分钟加载的资源都会阻止您的代码执行。这个代码片段是从这个参考中调整的(用 domcontentloaded 替换加载)。

于 2019-02-21T19:38:07.583 回答
5

在 onLoad 事件或按钮单击处理程序中使用 Javascript 来设置 iframe 的 src 属性。

于 2009-10-19T08:30:13.427 回答
4

您可以使用 loading 属性延迟加载 iframe

<iframe src="https://example.com"
        loading="lazy"
        width="600"
        height="400"></iframe>
于 2021-05-17T21:31:01.613 回答
2

这对我有用,但是如果您完全更改代码就会出现问题:

function loadIFrame() {
    window.frames['BodyFrame'].document.location.href = "iframe.html";
}         
function delayedLoad() {
    window.setTimeout(loadIFrame2, 5000);
}

使用:

<iframe src="" onLoad="delayedLoad()"></iframe>
于 2013-03-30T18:20:43.077 回答
2

页面加载后加载 iFrame 使用JQuery和一点 html 和 js

// Javascript
$(window).bind("load", function() {
  $('#dna_video').prepend('<iframe src="//player.vimeo.com/video/86554151" width="680" height="383" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
});
<!-- Append JQuery-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- HTML -->
<div id="dna_video"></div>

于 2017-09-10T20:07:59.430 回答
1

当需要在 css、js 等之后最后加载时,您可以使用 defer 属性:

iframe defer src="//player.vimeo.com/video/89455262"
于 2014-04-11T12:42:54.307 回答
0
window.setTimeout(function(){   
$("#myframe").attr("src","exp3.html");
$("#myframediv").show("slow");
},4000);

试试这个,这也有效。

于 2019-02-21T06:18:09.750 回答
-1

您还可以使用 CSS 将 display:none 应用于 iframe,然后像这样使用 jQuery 的 .show :

$(document).ready(function(){ 
    $('iframe.class_goes_here').show(); 
});
于 2010-12-21T04:01:30.437 回答
-2

或者我最喜欢的用途

setTimeout('your app', 6000)

这将使它等待 x 毫秒数来调用任何函数....

于 2009-10-19T13:38:55.017 回答