首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:循环,直到readyState完成

:循环,直到readyState完成
EN

Stack Overflow用户
提问于 2015-02-15 19:25:28
回答 2查看 1.7K关注 0票数 0

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

代码语言:javascript
复制
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循环?)

EN

回答 2

Stack Overflow用户

发布于 2015-02-15 19:27:57

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

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

代码语言:javascript
复制
<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>

我自己也没试过,所以我不知道它是否管用。祝好运!

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

更好的实现方法是

代码语言:javascript
复制
document.getElementById('myIframe').onreadystatechange = MyIframeReadyStateChanged;

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

和微小的短而甜蜜的jQuery代码是

代码语言:javascript
复制
$('#iframe').on('load', iframeLoaded);

同步行为

代码语言:javascript
复制
function restOfTheCode(){
// Having your whole rest of the code
}

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

票数 1
EN

Stack Overflow用户

发布于 2022-10-12 01:40:50

使用addEventListener函数

代码语言:javascript
复制
iframe.addEventListener("readystatechange", () => {
    if (iframe.readyState == "complete") {
        alert("Iframe is now loaded.");
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28530144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档