簡單的單頁面iframe在開發中間遇到的坑(微信)


對於每個人來說,做出不同的項目,最終的感覺都是不一樣的。如今頭條橫行,根據公司需要,我也需要去開發一款頁面端的頭條。

用到的一些插件和iframe窗體,插件是swiper和xscroll

 

代碼並沒有什么可讀性,只是希望通過總結對這些東西的應用的程度,

 

遇到的坑:

在一個頁面中如果想嵌套子頁面,大家應該都應該能想到iframe,的確對於曾經是很瘋狂的應用,不過后來因為一些iframe本身的缺陷,因此出於安全性的考慮,如今漸漸的淡出的大家的視角。

 

首頁簡單的介紹一下iframe:對於這種網上說的浮動幀的專業術語,對於差勁的我來說感覺很是多余。我只想知道他就是子窗體與父窗體的區別。

用法也就不多介紹了,很簡單,說2個小方面的東西:

 

方法:src可以是任意的文件或者圖片和網頁的路徑,可以窗體內禁止滾動,可以顯示一個頁面內的指定區域,可以修改iframe中任何的元素已經系統元素比如滾動條,

iframe注意事項:

iframe內部獨立構造,在iframe內獲取window對象只能獲取到當前iframe內的對象,獲取父頁面的方法只需在方法前面加上parent,就可以了,必須parent.window就找到的是父元素的window對象,父頁面控制子頁面只用document.frames(iframe的name),然后也可以直接用找,比如ducument.frames('myiframe').document.getElementsByTagName('body')[0].就能找到iframe的body元素,然后如何判斷是否在iframe內部還是外部,可以根據window.frames.length和parent.frames.length來進行判斷。

 

坑:

首先我要說明的一點是,在iframe中,顯示都是正常的,但是在微信中,頁面加載iframe內部的圖片和文字都是不可被復制的,就是這一個問題一直糾結了我半天的時間,我真的沒話可說,最終還是放棄了這個工作,因為在微信中,微信的自別識別二維碼機制,對於我還是很必要的,因此圖片的識別對於我來說是必須去做的一部,最終得出的結論是iframe是受微信的安全限制。防止掛馬入侵,因此組織的很多事件的默認行為,對於有更好的方法的大牛希望能留言和我討論一下。趕緊不盡。

 

其次對於單頁面應用中,在沒有定於路由和控制器的時候,也就是在不用任何框架的情況下,我如果需要控制頁面的前進后退,實現頁面的后退回到原來位置。。在純頁面和iframe的情況下。我找到了一個很好的h5的api   就是history.pushState,其實他本事的意義並不是很重要,但是對於這種需要前進后退的功能,就顯的尤為重要,,瀏覽器和手機的后退機制都是根據頁面的url進行判斷和加載后退,這個屬性完美的解決了頁面的url變更問題,不了解的請自行了解一下。3個參數,一個定制對於下個頁面的留存值,你可以根據window.onpopstate(e)的本身方法,e.state來獲取到你設定的第一個對象,第二個不多說了一般為null,第三個就是根據你域名的展現的后面的url,使你看起來鏈接灰常的高大上。 

 

至此,單頁面的應用基本上思路就說完了,

最后評價一下xscroll和iscroll,整體來說,我並不喜歡xscroll的方法,並不是很實用,並且相對於iscroll來說有點重,壓縮后的50多k,並且文檔也不是很清楚,iscroll雖說很久沒有更新了,不過我感覺對於手機端的滑動優化寫的也很不錯了,iscroll使用起來更容易,邏輯更簡單一些,不過其實也是根據個人的用法,

菜鳥表示遇到的一個插件的問題,就是對於一個華東加載的插件,一般是分為3層或者2層,最外層或者次外層的元素必須浮動元素。因為如果讓頁面整體滾動的話,會出現很多不可控性。因此在使用此類插件的時候一定要注意這個問題,要么插件本身會給出限制,要么就需要自己去手動增加樣式。要不然出現問題,你會發現和很多api都對不上號。

 

給自己一點點總結的時間,讓下次開發少花一點時間。

 


免責聲明!

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



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