iframe的问题,想不出来怎么简单描述。。。
function f()
{
s = ' <iframe id= "iframe1 " src= "demo1.htm "> </iframe> ';
document.getElementById( 'divIframe ').innerHTML = s;
alert(1);
alert(document.frames( 'iframe1 ').document.getElementById( 'div1 ').innerHTML);
}
当alert(1);注释掉后,最后一句alert()将提示缺少对象。
麻烦有经验的各位帮我解释一下~~
------解决方案--------------------alert(1)被注释时
demo1.htm尚未加载完毕
就被调用了div1,这时,div1可能还没有加载进来,报错
而有了前面那个alert,时间上有一个停顿,所以div1已经被加裁了就不会报错
------解决方案--------------------document.getElementById( 'divIframe ').innerHTML = s;//父页面加载demo1.htm
但页面加载需要一定的时间,浏览器要解析demo1.htm的DOM,
解析完毕后才能用getElementById这样的DOM方法来调用其中的元素。
alert(1)没有被注释,就给了浏览器足够的时间来加载demo1.htm,反之则没有。
------解决方案--------------------这样可以遮盖这个问题
function f()
{
s = ' <iframe id= "iframe1 " src= "demo1.htm "> </iframe> ';
document.getElementById( 'divIframe ').innerHTML = s;
// alert(1);
setTimeout( "show() ",50);
}
function show()
{
alert(document.frames( 'iframe1 ').document.getElementById( 'div1 ').innerHTML);
}
------解决方案--------------------没有加载完全的原因!!!
------解决方案--------------------window.onload=f;
function f()
{
s = ' <iframe id= "iframe1 " src= "demo1.htm "> </iframe> ';
document.getElementById( 'divIframe ').innerHTML = s;
//alert(1);
alert(document.frames( 'iframe1 ').document.getElementById( 'div1 ').innerHTML);
}
先看看是不是页面加载问题!
------解决方案--------------------我上面说的方法虽然可以掩盖这个问题,不过最好写在子页面上保险些
------解决方案--------------------写在子页面中,BODY的onload事件中,这样就保证执行顺序,如果照上面我那样写,虽然大部分情况可以解决,但是如果客户端遇到网速慢,网络风暴等情况还是会报JS错误