之前查閱資料說iframe已通過時,不建議使用,但是在先進的2018年,你去隨便打開一個網站,扔均可以見到iframe的身影,這不由要發問:iframe的應用量爲何仍是這麼大?css
HTML5再也不支持使用frame,iframe只有src 屬性
1、使用iframe的優缺點
優勢:
1.程序調入靜態頁面比較方便;
2.頁面和程序分離;
缺點:
1.iframe有很差之處:樣式/腳本須要額外鏈入,會增長請求。
另外用js防盜鏈只防得了小偷,防不了大盜。
2.iframe好在可以把原先的網頁所有原封不動顯示下來,可是若是用在首頁,是搜索引擎最討厭的.那麼你
的網站即便作的在好,也排不到好的名次!
若是是動態網頁,用include還好點!
可是必需要去除他的<html><head><title><body>標籤!
3.框架結構有時會讓人感到迷惑,特別是在多個框架中都出現上下、左右滾動條的時候。這些滾動條除了
會擠佔已經特別有限的頁面空間外,還會分散訪問者的留心力。訪問者遇到這種站點每每會馬上轉身離開
。他們會想,既然你的主頁如此混亂,那麼站點的其餘部分也許更不值得閱讀。
4.連接導航疑問。運用框架結構時,你必須保證正確配置全部的導航連接,如否則,會給訪問者帶來很大
的麻煩。好比被連接的頁面出如今導航框架內,這種狀況下訪問者便被陷住了,由於此時他沒有其餘地點
可去。
5.調用外部頁面,須要額外調用css,給頁面帶來額外的請求次數;
2、爲何少用iframe
iframes 提供了一個簡單的方式把一個網站的內容嵌入到另外一個網站中。但咱們須要慎重的使用iframe。iframe的建立比其它包括scripts和css的 DOM 元素的建立慢了 1-2 個數量級。html
使用 iframe 的頁面通常不會包含太多 iframe,因此建立 DOM 節點所花費的時間不會佔很大的比重。但帶來一些其它的問題:onload 事件以及鏈接池(connection pool)。web
1.Iframes 阻塞頁面加載瀏覽器
及時觸發 window 的 onload 事件是很是重要的。onload 事件觸發使瀏覽器的 「忙」 指示器中止,告訴用戶當前網頁已經加載完畢。當 onload 事件加載延遲後,它給用戶的感受就是這個網頁很是慢。服務器
window 的 onload 事件須要在全部 iframe 加載完畢後(包含裏面的元素)纔會觸發。在 Safari 和 Chrome 裏,經過 JavaScript 動態設置 iframe 的 SRC 能夠避免這種阻塞狀況。框架
2.惟一的鏈接池性能
瀏覽器只能開少許的鏈接到web服務器。比較老的瀏覽器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能對一個域名(hostname)同時打開兩個鏈接。這個數量的限制在新版本的瀏覽器中有所提升。Safari 3+ 和 Opera 9+ 可同時對一個域名打開 4 個鏈接,Chrome 1+, IE 8 以及 Firefox 3 能夠同時打開 6 個。你能夠經過這篇文章查看具體的數據表:Roundup on Parallel Connections.網站
有人可能但願 iframe 會有本身獨立的鏈接池,但不是這樣的。絕大部分瀏覽器,主頁面和其中的 iframe 是共享這些鏈接的。這意味着 iframe 在加載資源時可能用光了全部的可用鏈接,從而阻塞了主頁面資源的加載。若是 iframe 中的內容比主頁面的內容更重要,這固然是很好的。但一般狀況下,iframe 裏的內容是沒有主頁面的內容重要的。這時 iframe 中用光了可用的鏈接就是不值得的了。一種解決辦法是,在主頁面上重要的元素加載完畢後,再動態設置 iframe 的 SRC。搜索引擎
美國前 10 大網站都使用了 iframe。大部分狀況下,他們用它來加載廣告。這是能夠理解的,也是一種符合邏輯的解決方案,用一種簡單的辦法來加載廣告服務。但請記住,iframe 會給你的頁面性能帶來衝擊。只要可能,不要使用 iframe。當確實須要時,謹慎的使用他們。spa
3、iframe和frame的區別
一、frame不能脫離frameSet單獨使用,iframe能夠;
二、frame不能放在body中;
以下能夠正常顯示:
以下不能正常顯示:
三、嵌套在frameSet中的iframe必需放在body中;
以下能夠正常顯示
<body>
<frameset>
<iframe name="frame1" src="http://gongxquan.blog.163.com/test1.htm"/>
<iframe name="frame2" src="http://gongxquan.blog.163.com/test2.htm"/>
</frameset>
</body>
以下不能正常顯示:
<!--<body>-->
<frameset>
<iframe name="frame1" src="http://gongxquan.blog.163.com/test1.htm"/>
<iframe name="frame2" src="http://gongxquan.blog.163.com/test2.htm"/>
</frameset>
<!--</body>-->
四、不嵌套在frameSet中的iframe能夠隨意使用;
以下都可以正常顯示:
五、frame的高度只能經過frameSet控制;iframe能夠本身控制,不能經過frameSet控制,如:
六、若是在同一個頁面使用了兩個以上的iframe,在IE中能夠正常顯示,在firefox中只能顯示出第一個;使用兩個以上的frame在IE和firefox中都可正常