在項目中經(jīng)常要動態(tài)添加iframe,然后再對添加的iframe進行相關(guān)操作,有時候會遇到iframe加載很慢什么原因呢,該如何解決呢?帶著這個問題一起通過本文學習,尋找答案吧!
aaa.html
<HTML>
<HEAD>
<TITLE>aaa</TITLE>
</HEAD>
<BODY>
<IFRAME src="bbb.html" name=bbb width="100%" height="190"> </IFRAME>
<INPUT type="button" value="顯示text控件值" onclick="alert(bbb.document.all.txt.value)">
<SCRIPT LANGUAGE="JavaScript">
alert(bbb.document.all.txt.value);
</SCRIPT>
</BODY>
</HTML>
bbb.html
<HTML>
<HEAD>
<TITLE>bbb</TITLE>
</HEAD>
<BODY>
<input type=text name=txt value="guoguo">
</BODY>
</HTML>
問題:
執(zhí)行上面的aaa.html發(fā)現(xiàn)代碼直接alert的值沒有打出來,而點擊按鈕卻可以打出其值。
分析:
頁面加載時,遇到iframe就直接跳過去,加載下面的內(nèi)容,然后再回來加載iframe,當然也可以理解成遇到iframe又開了一個線程來加載iframe,但是因為涉及到新的IO操作比較耗時,所以加載完成iframe還是晚于頁面下部的js代碼執(zhí)行,所以出現(xiàn)了上面的問題。
解決方法:
在js代碼中加個延遲(具體延遲多長時間可以憑個人經(jīng)驗了),這樣就可以保證正常得到iframe中的對象了。
<SCRIPT LANGUAGE="JavaScript">
setTimeout("alert(bbb.document.all.txt.value)",1500);
</SCRIPT>
結(jié)論:當一個頁面中包含了iframe時,如果我們要通過js來操作iframe中的對象,一定要等到iframe加載完畢之后再操作,否則得不到想要的對象。
以上所述是小編給大家介紹的JS iFrame加載慢的解決辦法,希望對大家有所幫助