layer關閉重新整理父介面
layer是一款近年來備受青睞的web彈層元件,她具備全方位的解決方案,致力於服務各水平段的開發人員,您的頁面會輕鬆地擁有豐富友好的操作體驗。
最近一個專案採用的是hui前端框架,他的彈出層就是用的layer外掛,對於彈出層,有一個操作體驗大家都知道,就是關閉彈出層,需要重新整理父頁面。開始寫的時候,我陷入了自己的誤區,在彈出層處理成功之後,我呼叫的是:
var index = parent.layer.getFrameIndex(window.name);
parent.location.href=url;
parent.layer.close(index);
- 1
- 2
- 3
- 1
- 2
- 3
這個地方是這樣寫也沒錯,但是如果這麼寫,它就只能被一個地方呼叫了,如果有多個地方呼叫的話,它不能返回原地址,而是重定向到新的url地址上去了。而剛好,在我的專案中間,某一個彈出層被兩個地方呼叫了,所以很明顯這種方案就不合適了,需要優化。百度了一下,找到如下兩種優化方案:
方案一:
在layer彈出層中呼叫父介面重新載入函式
window.parent.location.reload();
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
- 1
- 2
- 3
- 1
- 2
- 3
方案二:
呼叫layer外掛的end回撥方法:
end - 層銷燬後觸發的回撥
型別:Function,預設:null
無論是確認還是取消,只要層被銷燬了,end都會執行,不攜帶任何引數。
父視窗開啟layer彈出框時,新增end回撥
function openLayer() {
//iframe層
parent.layer.open({
type: 2,
title: '修改',
shadeClose: false, //點選遮罩關閉
shade: 0.8,
area: ['30%', '45%'],
maxmin: true,
closeBtn: 1,
content: [url, 'yes'], //iframe的url,yes是否有滾動條
end: function () {
location.reload();
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
layer彈出框處理完成之後,就不需要呼叫其他重新整理操作函式了,直接關閉就行了
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
- 1
- 2
- 1
- 2
相比較而言,第一種方案會更佳,因為在操作邏輯上,手動關閉彈出框,應該不觸發重新整理操作,只有當彈出框的處理邏輯執行成功後,呼叫函式關閉彈出框才觸發父介面重新整理操作,基於這個邏輯,應該選擇方案一。方案二,不管怎樣都會重新整理頁面,實際上無端的增加了伺服器的處理壓力。
方案二:可以解決子頁面處理後的結果傳送給子頁面的父頁面的問題。
轉自:http://blog.csdn.net/tanzhen1991910/article/details/53448981
----------------------------------------------------------------------------------------
對於layer.js出現回撥關閉父類的彈出層時,之前的表單的submit失效的問題:
如何解決:網上有很多,有的是轉為ajax的請求,在資料傳輸完再關閉父類的彈出層:
下面是關閉父彈出層的辦法:
var index = parent.layer.getFrameIndex(window.name); //獲取視窗索引parent.layer.close(index); // 關閉layer
採用ajax這樣可以,但是我做的是支付,要彈出頁面才能支付,不能轉換為ajax,怎麼幫?後面我老大說:“你就不能晚點執行關閉嗎”?這是一個想法試了一下就好了。
附上程式碼:
$("#myForm").submit();
var index = parent.layer.getFrameIndex(window.name); //獲取視窗索引
setTimeout(function () {
parent.layer.close(index); // 關閉layer
},500);
我還需要在關閉父類視窗後再開啟一個視窗,則怎麼解決,後面發現layer.js留有一個好的方式,那就是呼叫父視窗的方法,這個不受子視窗的影響,通過:parent.父類方法名(引數)這樣就可以了,在父視窗中再呼叫layer.js的彈出就好了。
相關文章
- 討論關閉子視窗,重新整理父視窗(非模式視窗)模式
- 利用Layer元件彈出多個對話方塊(非巢狀)與關閉及重新整理元件巢狀
- js window.open()實現列印,如何在關閉列印視窗時重新整理父視窗JS
- layUI layer彈框按鈕 : 確認,取消,關閉事件UI事件
- JS防止重新整理,後退,關閉JS
- 父元件重新整理子元件也重新整理元件
- layer父介面呼叫子彈窗的方法和獲取子彈窗的元素值總結
- js如何在子視窗中關閉父視窗JS
- 怎麼關閉win10鎖屏介面 windows關閉鎖屏介面的方法Win10Windows
- 夜間模式的開啟與關閉,父模板的製作模式
- 視窗介面設計規範:介面關閉方式及介面疊加
- Caffe:Layer的相關學習
- sendBeacon 重新整理/關閉頁面之前傳送請求
- Android 跳轉過後關閉本介面Android
- 離開當前介面時關閉鍵盤
- Web Beacon 重新整理/關閉頁面之前傳送請求Web
- 139.API(除錯介面--開啟/關閉除錯)API除錯
- ubuntu如何關閉圖形介面,啟動文字模式Ubuntu模式
- layer.oad,layer.open
- InnoDB儲存引擎——重新整理鄰接頁、啟動、關閉和恢復儲存引擎
- 怎樣關閉win10系統開機前的歡迎介面_windows10關閉開機歡迎介面的設定方法Win10Windows
- 如何關閉win10登入介面_win10取消登入介面的方法Win10
- Layer NormalizationORM
- Win10系統怎麼關閉鎖屏介面【圖文】Win10
- 如何在web頁面關閉或重新整理之前,傳送Ajax到服務端Web服務端
- win10如何取消鎖屏介面 win10怎麼關閉顯示鎖屏介面Win10
- 如何關閉win10登入介面_win10不顯示登入介面的方法Win10
- Flutter:介面重新整理和生命週期Flutter
- flash 元件修改父級介面裡面的元件屬性元件
- 關閉jenkins哪些沒用的監控提示。介面清爽許多Jenkins
- JS 觸發不同ifram控制元件,實現重新整理,關閉標籤(H+框架)JS控制元件框架
- 關閉瀏覽器或者重新整理瀏覽器彈窗提示,可以取消或者確認。瀏覽器
- 關閉網頁彈出是否關閉的提示網頁
- iOS動畫程式設計-Layer動畫[ 1 ] Layer Animations OverviewiOS動畫程式設計View
- 【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )矩陣
- win10關閉防火牆提示怎麼關閉_win10關閉防火牆提示徹底關閉操作方法Win10防火牆
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- widget state重新整理介面原理揭祕