首先要明(míng)白iframe的應用場(chǎng)景,iframe并不是不能用,而是不能濫用。
在數(shù)據提交上(shàng)iframe相比ajax能夠提供更高(gāo)的穩定性以及兼容度,因此在這方面使用一下無妨;
同時(shí)iframe的作(zuò)用是內(nèi)嵌網頁,如果需要引用别的網頁做(zuò)說明(míng),iframe也是必要的。
但(dàn)是,利用內(nèi)嵌網頁的方式引入固定的內(nèi)容是完全錯誤地!雖然現在很(hěn)多(duō)開(kāi)源程序的後台仍在使用這種做(zuò)法,這不過是開(kāi)發者偷懶的手段而已,在前台應用中應極力避免這種做(zuò)法,無論是對用戶還(hái)是對搜索引擎的友(yǒu)好度這種做(zuò)法都是極傻。
回到問題來(lái),題主你(nǐ)竟然不知道(dào)可(kě)以通(tōng)過後端引入公用模塊的方式讓頁面某一區(qū)域內(nèi)容固定!!!将導航欄的內(nèi)容抽離成一個(gè)模闆,通(tōng)過後端引入再和(hé)本頁的內(nèi)容拼接輸出,這是後端新手都應該懂的常識來(lái)的吧(ba)←_←
使用後端引入的話(huà),每次頁面打開(kāi)導航區(qū)和(hé)內(nèi)容區(qū)都是一并加載的,實現的效果和(hé)你(nǐ)在每個(gè)頁面都複制(zhì)一個(gè)導航區(qū)是一樣的。隻是在代碼上(shàng)文件被拆分方便管理(lǐ)而已。請(qǐng)不要在意每次都要重新加載導航區(qū),那(nà)一點代碼産生(shēng)的帶寬資源占用和(hé)你(nǐ)頁面上(shàng)的圖片以及JQ庫比起來(lái)算(suàn)不了什麽。
題主想的方式是使用ajax讀取每個(gè)頁面的內(nèi)容并填充到內(nèi)容區(qū)。這麽做(zuò)并無不妥,但(dàn)是做(zuò)法也忒蛋疼了點,還(hái)不如直接用iframe引用導航欄。ajax是不應該被濫用,在一些(xiē)交互上(shàng)使用ajax避免頁面整體(tǐ)刷新減少(shǎo)請(qǐng)求量是一種很(hěn)方便的做(zuò)法,但(dàn)是頁面切換也用ajax那(nà)就是2B做(zuò)法了。
至于高(gāo)度自适應的問題,可(kě)以通(tōng)過JS來(lái)做(zuò),在頁面ready的時(shí)候判斷內(nèi)容區(qū)元素的高(gāo)度是否未填充滿,不滿則設置到$(window).height()。