经常会遇到这样的情况:当另一个页面嵌入到一个iframe中时。如果iframe加载的页面响应很快,我们可能感觉不到页面没有同步加载,但是试想一下,如果一个需要嵌入iframe的页面响应很慢,会发生什么这里?这时候会出现所有页面都加载完毕,但是在iframe元素处,会出现一片空白,直到内嵌页面加载完成后,新加载的页面才会显示在空白处。可想而知,如果一个页面长时间空白,对于浏览者来说意味着什么。如果嵌入页面没有完全加载,则会给出加载提示信息。比如:“页面加载”之类的,我想这对于浏览页面的用户来说将不再是一种折磨,而是一种视觉上的享受。为了达到这样的效果,一般采用以下原则进行处理。iframe加载区给出了友好的提示信息。当iframe加载完成后,清除提示信息让iframe显示这些就比较容易了,但是现在问题的关键是如何监控iframe元素中的页面是否加载完毕。这个问题的关键,一般来说,会分两种情况来讨论解决。嵌套在同一个域中。最好让子页面调用父页面。如果是外域,但是子页面无法修改,那么:在Firefox/Opera/Safari中,可以直接使用iframe的onload事件;在IE中,可以使用定时器来测量子页面document.readyState,或者使用iframe的onreadystatechange事件来计算对事件的响应。Nestedparent.htmlfunctionifrmLoaded(){//codehere}sub.htmlwindow.onload=function(){window.parent.ifrmLoaded();}嵌套页面不能修改,或者直接使用iframeonload事件document.getElementById('ifrm').onload=function(){//heredoc}在IE下,在Firefox/Opera/Safari中注册iframe的onreadystatechange事件oFrm=document.getElementById('ifrm');oFrm.onreadystatechange=function(){if(this.readyState&&this.readyState=='complete'){onComplete();}}兼容Firefox/Opera/Safari/IE处理方式varoFrm=document.getElementById('ifrm');oFrm.onload=oFrm.onreadystatechange=function(){if(this.readyState&&this.readyState!='complete')返回;否则{onComplete();}}双滚动条问题由于iframe默认是inline-block元素,解析空白字符,所以无缘无故出现滚动条。元素的类型是显示:块;2。修改父样式,如font-size:0;或行高:0;3。修改
