最近接到一個需求,在頁面返回的時候須要跳轉到指定的連接地址。這也沒什麼特別。可是作好測試的時候,發如今android設備有個物理/虛擬放回按鍵,這個返回直接就退出了瀏覽網頁。點擊頁面中的返回是沒問題的。通過各類折騰就是沒法實現效果。android
問題以下:
頁面實現onpopstate監聽返回事件,anroid設備返回按鍵點擊不觸發onpopstate事件。 瀏覽器
部分代碼以下:安全
var balink="http://www.baidu.com"; function pushHistory() { var state = { title: "上一頁", url: balink }; window.history.pushState(state, "title", "#") } $(function() { pushHistory(); window.addEventListener("popstate", function(e) { if (balink != "") { window.location = balink } }, false) });
測試在火狐瀏覽器是能夠觸發popstate事件的微信
嘗試解決過程:
1.嘗試在網上找解決辦法,發現仍是有人也遇到了這些問題的,可是都沒有解決辦法
測試發現,頁面打開後,若是用戶點擊了頁面有交互後,onpopstate事件監聽就能正常觸發,很奇怪。若是頁面打開無任何操做,直接按android返回按鈕。事件回調就沒觸發。直接退出了也退出了瀏覽器。測試
可是客戶須要的效果就是不用用戶點擊頁面,也能監聽返回並跳轉到指定連接。url
有人說是什麼瀏覽器的問題,有什麼安全策略問題。應該都不是主要緣由。spa
2.而後想着自動觸發頁面body是否可能能夠
失敗了,無效,不會觸發onpopstate事件 code
最後查了下微信瀏覽器內核的相關資料。引入了一些東西,雖然是完美解決了返回的問題。但仍是沒徹底弄明白緣由。blog