移動端popstate的怪異行為

來源:互聯網
上載者:User

標籤:傳統   highlight   listen   oca   UNC   解決   dde   dev   官方文檔   

由於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.onload=function(){  setTimeout(function(){  window.addEventListener(‘popstate‘, function() {    window.location.reload();});  },0)  }

  

 

移動端popstate的怪異行為

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.