理論上來說框架里面加載的是一個完成的html文檔,其判斷的方法和平常html文件加載應該一致。最近在一個項目中用到了iframe框架,需要判斷框架中的文檔是否加載完畢,加載完后再進行下一步的操作,這里找到了幾個方法來實現判斷:
var iframe = document.createElement("iframe"); iframe.src = "http://www.cnblogs.com/lifeil/"; if (!/*@cc_on!@*/0) { //if not IE iframe.onload = function(){ alert("框架加載完畢."); }; } else { iframe.onreadystatechange = function(){ if (iframe.readyState == "complete"){ alert("框架加載完畢."); } }; } document.body.appendChild(iframe);
后來有個牛人找到了如下更完美的處理方法:
var iframe = document.createElement("iframe"); iframe.src = "http://www.cnblogs.com/lifeil/"; if (iframe.attachEvent){ iframe.attachEvent("onload", function(){ alert("Local iframe is now loaded."); }); } else { iframe.onload = function(){ alert("Local iframe is now loaded."); }; } document.body.appendChild(iframe);
相比較值錢的方法可以發現,這個方法使用了onload方法來判斷,這種方法判斷框架是否加載完畢比之前的readystatechange 事件更加穩定。在IE瀏覽器中,需要通過attachEvent方法來注冊onload事件。這樣就可以完美的判斷框架是否加載完畢了。
PS:這里說的IE瀏覽器中onload方法是隱形的是指,動態創建的iframe需要通過attachEvent來綁定事件,而已經存在寫在html文檔里面的IE中也支持iframe.onload事件.