移动端popstate的怪异行为
生活随笔
收集整理的這篇文章主要介紹了
移动端popstate的怪异行为
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于ios的性能在緩存頁面比較好,所以一般頁面的后退都會保存之前的歷史頁面,
不會觸發頁面上的js等,所以可以觸發到popstate事件,而webkit的某些版本對popstate
的理解與官方標準不一致,導致每次訪問頁面都會同步為訪問了這個頁面的歷史紀錄,
所以popstate就被觸發了,而在項目中需要IOS一個后退刷新頁面
代碼:
window.addEventListener('popstate', function() {window.location.reload();
});
但進入頁面后頁面不斷的觸發以上方法,刷新頁面,這個webkit的對popstate的詭異行為導致的。
對這個差異的認知就是webkit中詭異行為的原因。webkit并沒有把HTML5的History和傳統的區分開,而根據官方文檔對popstate的描述,只要訪問歷史記錄就會觸發popstate。而傳統的History中訪問頁面和生產歷史記錄是同時的。所以在webkit中,無論是刷新還是訪問一個新網頁都會觸發popstate。而其它瀏覽器中這個popstate僅作用于HTML5的History,并不響應傳統的History,更不用說刷新和訪問新網頁的情況了。
解決方法: 延遲事件加載,讓頁面上加載完成后才進行popstate事件加載。
window.οnlοad=function(){setTimeout(function(){window.addEventListener('popstate', function() {window.location.reload();
});
},0)
}
轉載于:https://www.cnblogs.com/zhangzhicheng/p/9508742.html
總結
以上是生活随笔為你收集整理的移动端popstate的怪异行为的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串经典题目(Leetcode题解-P
- 下一篇: 字符串匹配经典题目——KMP算法(Lee