溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信瀏覽器左上角返回按鈕監(jiān)聽(tīng)的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2021-05-18 14:45:16 來(lái)源:億速云 閱讀:382 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要介紹微信瀏覽器左上角返回按鈕監(jiān)聽(tīng)的實(shí)現(xiàn)方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

問(wèn)題描述1:

微信開(kāi)發(fā)的時(shí)候,在公眾號(hào)菜單中打開(kāi)一個(gè)H5頁(yè)面(如:個(gè)人中心),在這個(gè)頁(yè)面上的一些操作,經(jīng)過(guò)多次跳轉(zhuǎn)后,點(diǎn)擊左上角的返回按鈕,發(fā)現(xiàn)會(huì)原封不動(dòng)的返回至上一級(jí)頁(yè)面。

即 公眾號(hào)菜單->A->B->C,點(diǎn)擊返回后,返回了B(且無(wú)刷新),目的是要在C直接跳轉(zhuǎn)至A(公眾號(hào)菜單->A->B->C,C->A),雖然可以在C上添加按鈕之類的操作進(jìn)行跳轉(zhuǎn)(公眾號(hào)菜單->A->B->C->A),但當(dāng)點(diǎn)擊左上角返回按鈕后,依然是會(huì)返回C頁(yè)面,并且,也無(wú)法確保用戶不去點(diǎn)擊左上角的返回按鈕。

解決方式:

在C頁(yè)面中添加如下javascript代碼:

$(function(){ 
 pushHistory(); 

 window.addEventListener("popstate", function(e) { //回調(diào)函數(shù)中實(shí)現(xiàn)需要的功能
  alert("我監(jiān)聽(tīng)到了瀏覽器的返回按鈕事件啦"); 
  location.href='你要跳轉(zhuǎn)的鏈接'; //在這里指定其返回的地址
 }, false); 
}); 
function pushHistory() { 
 var state = { 
  title: "title", 
  url: "__SELF__" 
 }; 
 window.history.pushState(state, state.title, state.url); 
}

問(wèn)題描述2:

以上,解決了返回按鈕的監(jiān)聽(tīng)與控制,但是又出現(xiàn)了新的問(wèn)題,即當(dāng)從C->A后,點(diǎn)擊返回按鈕,依然會(huì)返回C頁(yè)面,目的是在A頁(yè)面點(diǎn)擊返回則關(guān)閉網(wǎng)頁(yè)返回至公眾號(hào)對(duì)話頁(yè)面。

解決方式:

PS:評(píng)論區(qū)中有人(@一路博客博主)指出新版微信jdk的關(guān)閉頁(yè)面api已經(jīng)改變,已在代碼中標(biāo)出
本人未親自測(cè)試,各位可以兩種方法都試試。

在A頁(yè)面中添加如下javascript代碼:

$(function(){
 pushHistory();

 window.addEventListener("popstate", function(e) {
 // 新版中使用wx.closeWindow()方法
  WeixinJSBridge.call('closeWindow');
 }, false);
});

function pushHistory() {
 var state = {
  title: "myCenter",
  url: "__SELF__"
 };
 window.history.pushState(state, state.title, state.url);
}

問(wèn)題描述3:

在微信中進(jìn)入頁(yè)面就觸發(fā)了popstate事件。然后頁(yè)面會(huì)處于一直刷新?tīng)顟B(tài)。

解決方式:

定義boolean 變量bool=false。在頁(yè)面加載后,采用setTimeout方法設(shè)置1.5s的超時(shí),在超時(shí)執(zhí)行方法中設(shè)置bool=true。

在popstate監(jiān)聽(tīng)當(dāng)中增加對(duì)bool的判斷,當(dāng)bool=true時(shí),執(zhí)行內(nèi)容。
代碼如下:

$(function(){ 
 pushHistory(); 
 var bool=false; 
 setTimeout(function(){ 
  bool=true; 
 },1500); 
 window.addEventListener("popstate", function(e) { 
  if(bool){ 
   alert("我監(jiān)聽(tīng)到了瀏覽器的返回按鈕事件啦");
  } 
 }, false); 
});

以上是“微信瀏覽器左上角返回按鈕監(jiān)聽(tīng)的實(shí)現(xiàn)方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI