微信瀏覽器左上角返回按鈕的監聽


問題描述1:

微信開發的時候,在公眾號菜單中打開一個H5頁面(如:個人中心),在這個頁面上的一些操作,經過多次跳轉后,點擊左上角的返回按鈕,發現會原封不動的返回至上一級頁面。

即 公眾號菜單->A->B->C,點擊返回后,返回了B(且無刷新),目的是要在C直接跳轉至A(公眾號菜單->A->B->C,C->A),雖然可以在C上添加按鈕之類的操作進行跳轉(公眾號菜單->A->B->C->A),但當點擊左上角返回按鈕后,依然是會返回C頁面,並且,也無法確保用戶不去點擊左上角的返回按鈕。

解決方式:

在C頁面中添加如下javascript代碼:

$(function(){

  pushHistory(); window.addEventListener("popstate", function(e) {

   //回調函數中實現需要的功能 alert("我監聽到了瀏覽器的返回按鈕事件啦");

   location.href='你要跳轉的鏈接';//在這里指定其返回的地址

  }, false);

 });

function pushHistory() {

  var state = { title: "title", url: "__SELF__" };

  window.history.pushState(state, state.title, state.url);

}

問題描述2:

以上,解決了返回按鈕的監聽與控制,但是又出現了新的問題,即當從C->A后,點擊返回按鈕,依然會返回C頁面,目的是在A頁面點擊返回則關閉網頁返回至公眾號對話頁面。

在A頁面中添加如下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);

}

問題描述3:

在微信中進入頁面就觸發了popstate事件。然后頁面會處於一直刷新狀態。

解決方式:

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

在popstate監聽當中增加對bool的判斷,當bool=true時,執行內容。 
代碼如下:

$(function(){

  pushHistory();

   var bool=false;

  setTimeout(function(){ bool=true; },1500);

  window.addEventListener("popstate", function(e) {

    if(bool){

      alert("我監聽到了瀏覽器的返回按鈕事件啦");

    }

  }, false); });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM