前端iframe標簽介紹及使用


 

使用的場景:

(1) 有重復的板塊內容顯示的時候

# 后端如果是模板渲染方式(得到頁面是通過繼承的形式),可以換成iframe來請求直接獲取子功能頁面

 

 

iframe標簽的作用:

iframe標簽可以實現html主頁面嵌套html子頁面,子頁面可以是一個功能頁面,在某些時候使用iframe非常的方便

# 所以如果是模板渲染方式的,前端就可以使用iframe標簽節省一點網絡帶寬(傳輸的內容會少一些,並且主頁面不會刷新,只是iframe在請求得到新的資源)。

 

 

模板渲染和iframe的對比:

(1) 子頁面通過繼承的方式去實現,並且實現了html頁面功能的拆分

 

不好的地方:通過繼承,表示渲染模板時候,會先去加載繼承的頁面,再加載子頁面,這樣模板頁面也會在網絡傳輸,這樣會占一些無用的帶寬

 

使用iframe后:頁面通過模板渲染,也僅是某個功能頁面,返回的時候,會少返回模板繼承的部分

 

(2) 菜單點擊效果(主頁面可能有多個菜單),要在后端提前去渲染好用戶點的哪個菜單,才能返回給用戶新的頁面

 

不好的地方:增加了后端編碼的復雜度,需要通過if判斷把點擊效果也加在標簽上面,這樣后端又會吃一些cpu的資源

 

使用iframe后:由於前端只是發送src請求(僅改變子頁面內容),主頁面不會改變,所以菜單只需寫好前端事件即可,這樣就會少后端很多模板渲染的麻煩事,可以少渲染一些內容,效率也會提升一點。

 

模板渲染比iframe這種方式好的地方:

(1) iframe是一個url顯示的所有功能頁面,模板渲染可以通過不同的url,來得到不同前端信息界面,而iframe這種方式能看見的url只有首頁的url,所以用iframe的話,一般只會一個url去操作,如果要獲取某個功能頁面,首次打開也只能通過鼠標點擊,才能請求到那個功能頁面,但是效率來說肯定是iframe方式會高一點

 

 

iframe標簽的使用:

注:

(1) 下面都是使用的jquery的寫法定位的標簽,和原生js查找不同

(2) 它倆之間的轉換

  jquery >>> dom  === $('iframe')[0]  : 關鍵是這個[0]

  dom >>> jquery  === $(dom定位到的標簽)

 

格式:<iframe src='' frameborder='0'></iframe>

 

屬性:

src  # 獲取html頁面的url網址

frameborder  # 表示是否顯示框架的邊框,1顯示,0不顯示

 

1. iframe通過點擊事件獲取頁面的寫法

下面是點擊搜索按鈕的事件

# 這個是在iframe標簽中場景,window.parent切換到父窗口

# 如果是在iframe外直接$('iframe').attr('src', new_url)即可

 

2. iframe的刷新頁面及回退寫法

# 先要找到iframe標簽,在執行bom操作即可

(1) 在iframe標簽中實現刷新

$(window.parent.document).find('iframe')[0].contentWindow.location.reload(true);

 

(2) 在iframe標簽中實現回退

$(window.parent.document).find('iframe')[0].contentWindow.history.back();

 

(3) 主窗口的寫法

$('iframe')[0].contentWindow.location.reload(true);

$('iframe')[0].contentWindow.history.back();

 

3.獲取iframe的當前url

注:如果在iframe中切換了子頁面的url,通過src只會取到第一次的給的src屬性

$(window.parent.document).find('iframe')[0].contentWindow.location.href;

 

4.主頁面和iframe子頁面互相調用函數

使用場景:

(1) 模態框的彈出,不能說你模態通過子頁面的點擊,僅在子頁面有模態框的效果

(2) 各種消息彈框的顯示,不能說在子頁面顯示,會錯位

 

4.1.在iframe中調用主頁面的內容

window.parent.要調用的函數();

 

例子寫法:

# 父頁面中

 

 

 

# iframe中

 

 # iframe中調用上級窗口的函數寫法

 

4.2.調用iframe的函數寫法

$('iframe')[0].contentWindow.要調用的函數();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM