有没有办法异步加载iframe

有没有办法异步加载iframe,iframe,asynchronous,Iframe,Asynchronous,我有一个iframe指向另一个网站的网页。我不希望这阻止加载页面的其余部分。有没有异步加载的方法?iFrame应该异步加载,而无需您的任何努力。它不应该阻塞。如果您希望首先完全加载主页(例如,在iframe内容之前加载主页的图像),那么您必须使用一点javascript来设置iframe的url,如虽然我同意不应该这样做,但您可以等待您的网页完全加载,然后加载iframe内容。使用jQuery,我认为您可以执行以下操作: function loadFrame(){ var myFrame

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

iFrame应该异步加载,而无需您的任何努力。

它不应该阻塞。如果您希望首先完全加载主页(例如,在iframe内容之前加载主页的图像),那么您必须使用一点javascript来设置iframe的url,如

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

function loadFrame(){
    var myFrame = document.getElementById('myFrame');
    myFrame.src = "myURL";
};
  • 假设您的IFRAME看起来像:

$(文档).ready(函数(){
(window.frames | | document.frames)[“theOtherPage”].window.location=”“;
});

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

我们通过在主页底部的脚本元素中调用所需的方法来“伪造”OnLoad,甚至在结束正文标记之外:

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

BodyOnready();

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

HTML:

JS:

$(窗口).load(函数(){
如果使用jQuery($('#blabla').length,则可以:


$(窗口)。加载(函数(){
var f=document.createElement('iframe');
f、 src=url;
f、 宽度=1000;
f、 高度=500;
$('body')。追加(f);
});

其中
url
是某个url。

您可以等到触发“onload”后再设置iframe的src:

<body onload="loadFrame">

一些替代方案:

HTML:


您想阻止哪个加载?异步是什么意思?页面加载被阻止是否有问题?这对我不起作用。我在Firefox中测试过,但我怀疑这是否重要。@CaptainBli,我已经更新了代码。我想现在应该可以了。不。
$(文档).ready
在加载之前在DOMContentLoaded上运行。在加载之前设置src意味着它仍然会阻止加载。演示:主文档的
加载
在所有iframe加载之前不会启动。您可以在页面加载时通过javascript动态创建iframe,并将其附加到documentIframes加载中,但会异步阻止window.onload e这里有一些解释和解决方法,没有
text/jscript
mime类型,为什么你认为有呢?如果你认为有,那么首先谷歌一下,确定一下。
<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>
<body onload="loadFrame">
function loadFrame(){
    var myFrame = document.getElementById('myFrame');
    myFrame.src = "myURL";
};
<iframe id="YOURID" src="about:blank">Loading...</iframe>
window.onload = function(){
  document.getElementById('YOURID').src = 'https://insertYourUrlHere.com'
};