preventBack: function(theurl){
var pushState = window.history.pushState;
//點擊物理返回鍵時,退出到跳轉定義首頁
if(pushState){
window.history.pushState({a: Math.random()},'', location.href);
window.addEventListener('popstate', function(){
var type = typeof(theurl);
type == 'function' ? theurl() : window.location.href=theurl;
}, !1);
}
}
但是得注意一些ios系統下在APP內嵌的H5網頁會出現不明BUG(如鏈接跳轉直接跳了theurl)
當前活動歷史項(history entry)改變會觸發popstate事件。調用history.pushState()
創建新的歷史項(history entry),或調用history.replaceState()替換新的歷史項
(history entry),那么popstate事件的state屬性會包含歷史項(history entry)狀態對象(state object)的拷貝。
需要注意的是調用history.pushState()
或history.replaceState()不會觸發popstate事件。只有在做出瀏覽器動作時,才會觸發該事件,如用戶點擊瀏覽器的回退按鈕(或者在Javascript代碼中調用
history.back())
不同的瀏覽器在加載頁面時處理popstate
事件的形式存在差異。頁面加載時Chrome和Safari通常會觸發(emit )popstate
事件,但Firefox則不會
部分瀏覽器window.addEventListener('popstate',function(){})不會觸發