Javascript::循环,直到readyState完成
Javascript:: Loop until readyState is complete
我想知道为什么这个简单的代码会永远循环?
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.");
}
});
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery UI自动完成突然停止工作
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 如何确定javascript已经完成了某些操作.ios上的
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 在数据提取完成之前进行页面渲染
- jQuery自动完成阻止选择后聚焦
- Jquery UI自动完成无法工作
- 错误:对象没有't支持'自动完成'
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- Highchart:endOnTick没有完成xaxis的最大极限设置
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 动画完成后的TweenMax
- 添加自定义标记以自动完成
- 角度异步http自动完成
- Don'不允许将焦点集中在自动完成的选择上
- 如何将JSON数据源适合Jquery自动完成小部件
- 通过PHP的标头(“内容处置:附件..”)下载文件后,将document.readyState的状态更改为“完成”
- Javascript::循环,直到readyState完成
- 在javascript中请求完成后将readyState更改为0