1. 程式人生 > >Layer 彈層外掛注意事項

Layer 彈層外掛注意事項

layer 彈層是一個很簡潔,很好看的彈層外掛。

前言

近幾天專案裡使用了layer彈層,初次使用有些生疏,在使用過程中遇到了很多問題,查閱官方api,總是碰到一些問題,感覺官方api在某些細節上敘述的不是特別清楚。特此在我使用中某些細節問題做一下說明。

layer型別

layer提供了5種層型別。可傳入的值有:0(資訊框,預設)1(頁面層)2(iframe層)3(載入層)4(tips層)。

為什麼會劃分這麼多種型別,個人理解,這麼多種型別其實是為了應對不同的應用場景。比如提示框,那你就用msg來寫就行了,沒別要用一個頁面層什麼的。諸如此類簡單的,不在贅述。在這裡重點說一下頁面層,iframe層和tips層的區別和應用場景。

頁面層

頁面層conten裡放的內容是要載入到當前頁面的東西。可以是html的字串也可以示DOM物件。如果是自己寫的html字串,沒有影響。但如果是DOM物件,需注意官方api裡有一句話:

layer.open({
  type: 1,
  content: $('#id') //這裡content是一個DOM,注意:最好該元素要存放在body最外層,否則可能被其它的相對元素所影響
});

在我看來,不是最好放在body外面,而是必須放在外面。因為頁面層會載入彈層內容到當前頁面上,如果不在body外,那豈不是有兩個id一樣的內容載入了!
另外放在body外還得設定隱藏哦,一般根據習慣會用一個div來包著彈層的內容。載入時也是載入div。

重點

載入的彈層在當前頁面上,所以在當前頁的js裡獲取彈層內容操作是很方便的。

應用場景

適合直接彈出靜態頁面,不需要在彈出之前跟後臺交

iframe層

iframe層的content是一個請求,通過後臺返回的頁面來填充彈層內容。

layer.open({
  type: 2, 
  content: 'http://sentsin.com' //這裡content是一個URL,如果你不想讓iframe出現滾動條,你還可以content: ['http://sentsin.com', 'no']
}); 

重點

載入的彈層不在當前頁面上,所以在當前頁的js裡獲取彈層內容操作是很不方便

的。
本人嘗試通過js來獲取是可以得,先獲得iframe物件進而獲取你想要的東西,很麻煩。
也許在有些人看來不麻煩,但真要這樣做其實是跟layer的初心簡單簡潔,背道而馳了。

應用場景

適合需要後臺互動返回的頁面往往有後臺的引數或者資料載入。

tips層

tips層其實是一種類似msg一樣的小提醒。我理解官方的意思就是讓它作為一種小提醒去使用的。

重點

content裡放的只能是html的字串。如果強行想放DOM物件,需要$(“#id”).html().否則彈層內容會出現[object,object]
由於內容是靜態的html標籤,所以如果需要展示後臺互動的動態內容怎麼辦?
先考慮用iframe,如果業務非得要這麼做,那可以在彈層之前,先得到互動之後的動態頁面,然後把互動之後的頁面的html字串放到tips的content裡。

應用場景

適合需要貼著某個控制元件顯示彈層