layer插件實(shí)現(xiàn)在彈出層中彈出一警告提示并關(guān)閉彈出層的方法
昨天layer插件彈出層關(guān)閉問(wèn)題弄的我直撓頭,短短幾行代碼,用了我將近2個(gè)鐘頭才解決。我的使用場(chǎng)景是這樣。在頁(yè)面中用layer.open彈出一個(gè)層,在層內(nèi)是微信支付二維碼,客戶掃碼支付。支付成功后關(guān)閉此彈出層,并提示項(xiàng)目投遞成功,然后再跳轉(zhuǎn)到其他頁(yè)面。為了監(jiān)控微信二維碼掃碼支付是否成功。我利用了每隔三秒,查詢下支付訂單,查看支付訂單的支付狀態(tài)是否改變。在實(shí)際操作中由于使用的是location.href做跳轉(zhuǎn),然而跳轉(zhuǎn)執(zhí)行的非常慢,要10幾秒才能成功,這不能忍。只能退而求其次,只是提示投遞成功,然后關(guān)閉彈出層。由于關(guān)閉彈出層,及彈出警告提示的相關(guān)代碼是在彈出層所在頁(yè)面執(zhí)行。
實(shí)際代碼在執(zhí)行過(guò)程當(dāng)中遇到了各種問(wèn)題。
$(function () {
setInterval(GetDeliverProjectPayStatusSuccess, 3000);
});
function GetDeliverProjectPayStatusSuccess() {
$.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
console.info(data);
if (data == 1) {
parent.layer.closeAll();
layer.alert("項(xiàng)目投遞成功");
}
});
}
首先嘗試的代碼如上。先關(guān)閉彈出層,然后提示項(xiàng)目投遞成功。這嘗試的結(jié)果是,彈出層被關(guān)閉了。卻沒(méi)有任何提示。為什么這樣執(zhí)行,分析的結(jié)果是關(guān)閉彈出層,意味著彈出頁(yè)面被關(guān)閉。彈出頁(yè)面被關(guān)閉了。在彈出頁(yè)面存在的layer.alert代碼也就無(wú)從執(zhí)行。然后這兩行代碼調(diào)換位置??扇匀皇菑棾鰧颖魂P(guān)閉了。卻沒(méi)有提示。這個(gè)分析的原因是就像javascript中的alert與location.href一樣。如果先alert然后在location.href,也不會(huì)執(zhí)行alert,或者說(shuō)其實(shí)有執(zhí)行,但是由于系統(tǒng)執(zhí)行的非??欤€沒(méi)等你看到alert信息,瀏覽器已經(jīng)跳轉(zhuǎn)了。這里也是,還沒(méi)等你看到項(xiàng)目投遞成功的信息,彈出層已經(jīng)關(guān)閉了。
又嘗試了帶回調(diào)函數(shù)的layer.alert,等客戶點(diǎn)擊layer.alert的確定按鈕后再執(zhí)行parent.layer.closeAll() 來(lái)關(guān)閉彈出層。然而殘酷的現(xiàn)實(shí)是,由于這個(gè)是每隔三秒執(zhí)行一次post請(qǐng)求,結(jié)果就是如果你點(diǎn)擊關(guān)閉按鈕過(guò)慢,它會(huì)每隔3秒彈出項(xiàng)目投遞成功的提示。這怎么能用。難道你要求客戶必須快速反應(yīng),點(diǎn)擊關(guān)閉按鈕?經(jīng)過(guò)不斷嘗試,最終還是找到了一個(gè)方法解決了這個(gè)問(wèn)題。
能夠很好解決此問(wèn)題的代碼如下:
$(function () {
setInterval(GetDeliverProjectPayStatusSuccess, 3000);
});
function GetDeliverProjectPayStatusSuccess() {
$.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
console.info(data);
if (data == 1) {
parent.layer.alert("項(xiàng)目投遞成功");
var index = parent.layer.getFrameIndex(window.name); //先得到當(dāng)前iframe層的索引
parent.layer.close(index); //再執(zhí)行關(guān)閉
}
});
}
以上這篇layer插件實(shí)現(xiàn)在彈出層中彈出一警告提示并關(guān)閉彈出層的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript輕松實(shí)現(xiàn)當(dāng)鼠標(biāo)移開(kāi)時(shí)已彈出子菜單自動(dòng)消失
本文為大家詳細(xì)介紹下使用javascript實(shí)現(xiàn)當(dāng)鼠標(biāo)移開(kāi)時(shí)已彈出子菜單自動(dòng)消失,具體如下,感興趣的朋友不要錯(cuò)過(guò)2013-12-12
手把手教你在微信小程序中使用three.js(保姆級(jí)教程)
Three.js是一款運(yùn)行在瀏覽器中的3D引擎,你可以用它創(chuàng)建各種三維場(chǎng)景,包括了攝影機(jī)、光影、材質(zhì)等各種對(duì)象,下面這篇文章主要給大家介紹了關(guān)于如何在微信小程序中使用three.js的保姆級(jí)教程,需要的朋友可以參考下2023-03-03
2020淘寶618理想生活列車自動(dòng)領(lǐng)喵幣js腳本的代碼
這篇文章主要介紹了2020淘寶618理想生活列車自動(dòng)領(lǐng)喵幣腳本,需要先安裝 auto.js腳本,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
d3.js 地鐵軌道交通項(xiàng)目實(shí)戰(zhàn)
這篇文章主要介紹了d3.js 地鐵軌道交通項(xiàng)目實(shí)戰(zhàn),本文通過(guò)實(shí)例代碼項(xiàng)目截圖給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法【測(cè)試可用】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法,結(jié)合實(shí)例形式詳細(xì)分析了javascript針對(duì)a標(biāo)簽及span標(biāo)簽的正則匹配相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析
這篇文章主要介紹了js的for in循環(huán)和java里foreach循環(huán)的區(qū)別,實(shí)例分析了js的for in循環(huán)使用技巧并說(shuō)明了與Java中foreach循環(huán)的使用區(qū)別,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

