Javascript::循环,直到readyState完成

Javascript:: Loop until readyState is complete

本文关键字:readyState 完成 直到 循环 Javascript      更新时间:2023-11-22

我想知道为什么这个简单的代码会永远循环?

var iBody=document.getElementsByTagName('body')[0];
d=document.createElement('iframe');
d.src='http://m.puaction.com';
d.id="myiFrame";
iBody.appendChild(d);
while(document.getElementById('myiFrame').readyState!=='complete')
{
    //do nothing;
}
alert('iFrame fully loaded');

基本上,我想确保它已经完全加载,然后检查它是否完全可见(另一个while循环?)

我通过谷歌找到了以下链接:http://wpapi.com/check-iframes-loaded-completely-browser/

不知道它是否解决了"找不到页面"的问题。

<script type="javascript">
var iframe = document.createElement("iframe");
iframe.src = "http://www.your_iframe.com/";
if (navigator.userAgent.indexOf("MSIE") > -1 && !window.opera) {
  iframe.onreadystatechange = function(){
    if (iframe.readyState == "complete"){
      alert("Iframe is now loaded.");
    }
  };
} else {
  iframe.onload = function(){
    alert("Iframe is now loaded.");
  };
}
</script>

我自己还没有试过,所以我不知道它是否有效。祝你好运

在你的情况下,你不需要检查readystatechange,

更好的实现方式是

document.getElementById('myIframe').onreadystatechange = MyIframeReadyStateChanged;
function MyIframeReadyStateChanged()
{
    if(document.getElementById('myIframe').readyState == 'complete')
    {
        alert("Iframe is now loaded.");
    }
}

而小巧而甜美的jQuery代码是

$('#iframe').on('load', iframeLoaded);

对于同步行为

function restOfTheCode(){
// Having your whole rest of the code
}

现在只执行restOfTheCode()而不是alert("IFrame is loaded")

使用addEventListener函数

iframe.addEventListener("readystatechange", () => {
    if (iframe.readyState == "complete") {
        alert("Iframe is now loaded.");
    }
});