1. 程式人生 > >如何監聽Android手機物理返回鍵

如何監聽Android手機物理返回鍵

概述

window.onpopstatepopstate事件在window物件上的事件控制代碼.

每當處於啟用狀態的歷史記錄條目發生變化時,popstate事件就會在對應window物件上觸發. 如果當前處於啟用狀態的歷史記錄條目是由history.pushState()方法建立,或者由history.replaceState()方法修改過的, 則popstate事件物件的state屬性包含了這個歷史記錄條目的state物件的一個拷貝.

呼叫history.pushState()或者history.replaceState()不會觸發popstate事件. popstate事件只會在瀏覽器某些行為下觸發, 比如點選後退、前進按鈕(或者在JavaScript中呼叫history.back()、history.forward()、history.go()

方法).

當網頁載入時,各瀏覽器對popstate事件是否觸發有不同的表現,Chrome 和 Safari會觸發popstate事件, 而Firefox不會.

語法

window.onpopstate = funcRef;
  • funcRef 是個函式名.

popstate事件

假如當前網頁地址為http://example.com/example.html,則執行下述程式碼後:

window.onpopstate = function(event) {
  alert("location: " + document.location + ", state: " + JSON.stringify
(event.state)); }; //繫結事件處理函式. history.pushState({page: 1}, "title 1", "?page=1"); //新增並激活一個歷史記錄條目 http://example.com/example.html?page=1,條目索引為1 history.pushState({page: 2}, "title 2", "?page=2"); //新增並激活一個歷史記錄條目 http://example.com/example.html?page=2,條目索引為2 history.replaceState({page: 3}, "title 3", "?page=3"
); //修改當前啟用的歷史記錄條目 http://ex..?page=2 變為 http://ex..?page=3,條目索引為3 history.back(); // 彈出 "location: http://example.com/example.html?page=1, state: {"page":1}" history.back(); // 彈出 "location: http://example.com/example.html, state: null history.go(2); // 彈出 "location: http://example.com/example.html?page=3, state: {"page":3}

即便進入了那些非pushState和replaceState方法作用過的(比如http://example.com/example.html)沒有state物件關聯的那些網頁, popstate事件也仍然會被觸發.

規範

相關連結