91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

layer如何實現關閉彈出層刷新父界面功能

發布時間:2021-07-06 10:47:14 來源:億速云 閱讀:223 作者:小新 欄目:web開發

這篇文章主要介紹了layer如何實現關閉彈出層刷新父界面功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體如下:

layer是一款近年來備受青睞的web彈層組件,她具備全方位的解決方案,致力于服務各水平段的開發人員,您的頁面會輕松地擁有豐富友好的操作體驗。

最近一個項目采用的是hui前端框架,他的彈出層就是用的layer插件,對于彈出層,有一個操作體驗大家都知道,就是關閉彈出層,需要刷新父頁面。開始寫的時候,我陷入了自己的誤區,在彈出層處理成功之后,我調用的是:

var index = parent.layer.getFrameIndex(window.name);
parent.location.href=url;
parent.layer.close(index);

這個地方是這樣寫也沒錯,但是如果這么寫,它就只能被一個地方調用了,如果有多個地方調用的話,它不能返回原地址,而是重定向到新的url地址上去了。而剛好,在我的項目中間,某一個彈出層被兩個地方調用了,所以很明顯這種方案就不合適了,需要優化。百度了一下,找到如下兩種優化方案:

方案一:

在layer彈出層中調用父界面重新加載函數

window.parent.location.reload();
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);

方案二:

調用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();
      }
});

layer彈出框處理完成之后,就不需要調用其他刷新操作函數了,直接關閉就行了

var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);

相比較而言,第一種方案會更佳,因為在操作邏輯上,手動關閉彈出框,應該不觸發刷新操作,只有當彈出框的處理邏輯執行成功后,調用函數關閉彈出框才觸發父界面刷新操作,基于這個邏輯,應該選擇方案一。方案二,不管怎樣都會刷新頁面,實際上無端的增加了服務器的處理壓力。

方案二:可以解決子頁面處理后的結果發送給子頁面的父頁面的問題。

對于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如何實現關閉彈出層刷新父界面功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林市| 原平市| 双柏县| 上虞市| 云林县| 唐海县| 巴林左旗| 商洛市| 富川| 常宁市| 交口县| 句容市| 中江县| 长春市| 昌江| 紫云| 襄城县| 涞源县| 太和县| 嘉黎县| 托克托县| 苍溪县| 米泉市| 克什克腾旗| 长兴县| 平顶山市| 卓尼县| 汉阴县| 河源市| 凤冈县| 高陵县| 县级市| 光山县| 泰来县| 元朗区| 潮安县| 祁门县| 达尔| 株洲县| 车险| 孝感市|