廣告等第三方應用嵌入到web頁面方案 之 使用iframe嵌入


有些項目中可能會遇到這樣的需求, 需要在一個項目中嵌入其他的項目的頁面或者功能.並且需要這兩個頁面之間能夠進行交互.

本文主要介紹如何實現這種第三方應用的嵌入, 主要有以下幾個方向:

1.iframe引入第三方應用

2.嵌入js片段

3.封裝成SDK

本篇將主要介紹第一種, 通過iframe嵌入第三方頁面, 接下來的幾篇文章將分別介紹其他兩種方式

使用iframe嵌入是目前使用很廣泛的一種嵌入方案, 先看幾個案例:  

一. 使用案例

  • 搜狐移動端使用iframe嵌入廣告: 

搜狐移動端使用iframe嵌入廣告

 

  • 移動端視頻網站使用iframe進行視頻嵌入 

移動端視頻網站嵌入廣告

 

  •  7724小游戲使用iframe嵌入游戲 

二. 實現過程

  • iframe標簽引入第三方頁面地址

  iframe的src設置為第三方服務器上部署的html頁面,並將需要的參數作為URL的一部分傳遞給該頁面

  • 獲取參數請求數據

  第三方頁面中,首先獲取到URL中的參數,根據參數向服務端發起ajax請求,獲得頁面需要展示的數據

  • 展示頁面

  根據獲取的數據,將頁面展示在主頁面上

 

三. 通信方式

  由於iframe頁面與主頁面之間不在同下, 在iframe頁面和主頁面交互時, 會有跨域問題, 不能使用window.parent直接進行交互,目前跨域通信的方案有以下幾種: 

  • 使用H5的PostMessage

    HTML5新增的window.postMessage, 是一種安全的,基於事件的消息API.

  • 降級技術

  對於低版本瀏覽器, 不支持PostMessage, 可使用以下降級方案:

 

    1.創建與父頁面同源的ifame

 

    2.使用window.name屬性

 

    3.通過hash

 

    4.使用 ADdobe Flash 對象

  • 使用easyXDM簡化跨域

  easyXDM是一個經過充分測試的JavaScript庫,有如下優點

 

    1.簡化了跨域iframe之間的通信,並已經解決了所有的痛點.

 

    2.easyXDM 集成了現有的多種跨域解決方案,針對不同瀏覽器可以適配最合適的方案

 

    3.可以將原來寫死在頁面上的 iframe 改為通過 easyXDM.Rpc() 的方式進行加載,從而更靈活的實現iframe嵌入。

 

  下面是easyXDM的github地址: https://github.com/oyvindkinsey/easyXDM#readme

 

以上跨域通信的具體實現不在此詳細介紹.

 

四. 使用iframe嵌入優劣勢分析

 

優勢: 

  1. 完全獨立的DOM環境,不會受主頁面的樣式影響
  2. 完全獨立的window,避免和主頁面其他腳本沖突
  3. 不需要跨域進行數據請求
  4. 安全, 主頁面無法訪問和更改iframe的DOM環境

劣勢: 

  1. iframe增加了http請求次數
  2. iframe標簽創建速度較慢 (可參考博客: https://www.cnblogs.com/sharpxiajun/p/4077515.html)
  3. 跨域iframe通信實現繁瑣

 


免責聲明!

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



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