微信瀏覽器左上角返回按鈕監(jiān)聽的實(shí)現(xiàn)
問題描述1:
微信開發(fā)的時(shí)候,在公眾號(hào)菜單中打開一個(gè)H5頁(yè)面(如:個(gè)人中心),在這個(gè)頁(yè)面上的一些操作,經(jīng)過多次跳轉(zhuǎn)后,點(diǎn)擊左上角的返回按鈕,發(fā)現(xiàn)會(huì)原封不動(dòng)的返回至上一級(jí)頁(yè)面。
即 公眾號(hào)菜單->A->B->C,點(diǎn)擊返回后,返回了B(且無刷新),目的是要在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è)面,并且,也無法確保用戶不去點(diǎn)擊左上角的返回按鈕。
解決方式:
在C頁(yè)面中添加如下javascript代碼:
$(function(){ pushHistory(); window.addEventListener("popstate", function(e) { //回調(diào)函數(shù)中實(shí)現(xiàn)需要的功能 alert("我監(jiān)聽到了瀏覽器的返回按鈕事件啦"); location.href='你要跳轉(zhuǎn)的鏈接'; //在這里指定其返回的地址 }, false); }); function pushHistory() { var state = { title: "title", url: "__SELF__" }; window.history.pushState(state, state.title, state.url); }
問題描述2:
以上,解決了返回按鈕的監(jiān)聽與控制,但是又出現(xià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); }
問題描述3:
在微信中進(jìn)入頁(yè)面就觸發(fā)了popstate事件。然后頁(yè)面會(huì)處于一直刷新狀態(tài)。
解決方式:
定義boolean 變量bool=false。在頁(yè)面加載后,采用setTimeout方法設(shè)置1.5s的超時(shí),在超時(shí)執(zhí)行方法中設(shè)置bool=true。
在popstate監(jiān)聽當(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)聽到了瀏覽器的返回按鈕事件啦"); } }, false); });
到此這篇關(guān)于微信瀏覽器左上角返回按鈕監(jiān)聽的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)微信瀏覽器返回按鈕監(jiān)聽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
three.js響應(yīng)式設(shè)計(jì)實(shí)例詳解
響應(yīng)式網(wǎng)站設(shè)計(jì)(Responsive?Web?design)是一種網(wǎng)絡(luò)頁(yè)面設(shè)計(jì)布局,是目前比較流行的一種網(wǎng)頁(yè)設(shè)計(jì),下面這篇文章主要給大家介紹了關(guān)于three.js響應(yīng)式設(shè)計(jì)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04JavaScript?ES6中class定義類實(shí)例方法
ES6提供了更接近面向?qū)ο?注意:javascript本質(zhì)上是基于對(duì)象的語言)語言的寫法,引入了Class(類)這個(gè)概念,作為對(duì)象的模板,下面這篇文章主要給大家介紹了關(guān)于JavaScript?ES6中class定義類的相關(guān)資料,需要的朋友可以參考下2022-07-07十個(gè)優(yōu)秀的Ajax/Javascript實(shí)例網(wǎng)站收集
今天,要向大家推薦10個(gè)相當(dāng)棒的Ajax和Javascript國(guó)外資源網(wǎng)站或博客,它們提供了相當(dāng)多的高質(zhì)量Ajax、Javascript實(shí)例及教程,喜歡Ajax和Javascript的朋友絕對(duì)不能錯(cuò)過。2010-03-03JS實(shí)現(xiàn)獲取來自百度,Google,soso,sogou關(guān)鍵詞的方法
這篇文章主要介紹了JS實(shí)現(xiàn)獲取來自百度,Google,soso,sogou關(guān)鍵詞的方法,結(jié)合實(shí)例形式分析了js獲取來路頁(yè)面的方法與相關(guān)搜索引擎關(guān)鍵詞的處理技巧,需要的朋友可以參考下2016-12-12JavaScript使用showdown實(shí)現(xiàn)markdown預(yù)覽功能
Showdown.js 是一個(gè)JavaScript庫(kù),用于將Markdown文本轉(zhuǎn)換為HTML,這篇文章將給大家介紹了JavaScript使用showdown實(shí)現(xiàn)markdown預(yù)覽功能,文中通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-01-01js控制不同的時(shí)間段顯示不同的css樣式的實(shí)例代碼
這篇文章介紹了js控制不同的時(shí)間段顯示不同的css樣式的實(shí)例代碼,有需要的朋友可以參考一下2013-11-11