有没有办法异步加载iframe

时间:2010-01-22 01:04:03

标签: iframe asynchronous

我有一个iframe指向另一个网站的网页。我不希望这阻止加载页面的其余部分。有没有办法异步加载它?

8 个答案:

答案 0 :(得分:11)

它不应该阻止。如果您希望主页面首先完全加载(例如,iframe内容之前的主页面图像),那么您将不得不使用一些javascript来设置iframe的网址,例如<body onload="javascript:...">

答案 1 :(得分:8)

使用jQuery,这有效:

<script type="text/javascript">
  $(window).load(function() {
    var f = document.createElement('iframe');
    f.src = url; 
    f.width = 1000; 
    f.height = 500;
    $('body').append(f);
  });
</script>

其中url是某个网址。

答案 2 :(得分:4)

我认为@Coxy是正确的,OnLoad不会触发。至少在运行一些网页性能测试时,我觉得它正在等待iframe认为页面要完全加载。因此,我使用这个小的jQuery片段加载iframe:

HTML: <iframe id="blabla"></iframe>

JS:

$(window).load(function() {
   if ($('#blabla').length <= 0) { return; }  // to avoid errors in case the element doesn't exist on the page / removed.
   $('#blabla').attr('src','//example.com/page');
});

答案 3 :(得分:3)

iframe应该异步加载而不需要您付出任何努力。

答案 4 :(得分:3)

我们遇到的一个问题是,虽然iframe已经异步加载,但在iframe加载完成之前,主页面不会触发OnLoad。

我们通过在主页底部的脚本元素中调用我们想要的方法'伪造'OnLoad来解决这个问题,甚至在关闭正文标记之外:

</body>
<script  type='text/jscript' language='javascript'>
BodyOnready();
</script>

答案 5 :(得分:2)

虽然我同意这不应该发生,但您可以等待您的网页完全加载,然后加载iframe内容。使用jQuery,我认为你可以这样做:

  • 假设您的IFRAME如下:<iframe name="theOtherPage"></iframe>


$(document).ready(function(){
  (window.frames || document.frames)["theOtherPage"].window.location = "http://theotherpage.com/"; 
});

答案 6 :(得分:2)

您可以等到'onload'触发后设置iframe的src:

<body onload="loadFrame">

然后是这样的:

function loadFrame(){
    var myFrame = document.getElementById('myFrame');
    myFrame.src = "myURL";
};

答案 7 :(得分:-1)

一些香草JS替代方案:

HTML:

<iframe id="YOURID" src="about:blank">Loading...</iframe>

JS:

window.onload = function(){
  document.getElementById('YOURID').src = 'https://insertYourUrlHere.com'
};