簡體   English   中英

單擊瀏覽器后退按鈕時觸發事件

[英]Trigger an event when the browser back button is clicked

我試圖在單擊瀏覽器后退按鈕時運行一些代碼。

如何在不更改瀏覽器歷史記錄的情況下找到瀏覽器的后退按鈕?

我嘗試了下面的代碼。 我在else塊中遇到一個異常:“事件未定義”。

 window.onunload = HandleBackFunctionality(); function HandleBackFunctionality() { if(window.event) { if(window.event.clientX < 40 && window.event.clientY < 0) { alert("Browser back button is clicked…"); } else { alert("Browser refresh button is clicked…"); } } else { if(event.currentTarget.performance.navigation.type == 1) { alert("Browser refresh button is clicked…"); } if(event.currentTarget.performance.navigation.type == 2) { alert("Browser back button is clicked…"); } } }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    // do something
  }
  if (direction == 'forward') {
    // do something else
  }
});

好的。 除了您不應該最初觸發事件和.unload = FunctionName而不是.unload=FunctionName()並且您需要傳遞event -argument 我檢查了瀏覽器中的代碼這一事實。

currentTarget為空 - 這完全有道理,因為沒有像 onclick 這樣的事件目標,但它只是站點重新加載/卸載。

請使用它自己調試代碼並使其適合您的需要:window.onunload = HandleBackFunctionality;

function HandleBackFunctionality(event)
{
  console.log(event, window.event);
}

您將看到 currentTarget 未設置(而 event 已設置)。

這是唯一適用於 IOS Safari 的解決方案。

  <script>
     window.addEventListener( "pageshow", function ( event ) {
     var pagehistory = event.persisted || 
                     ( typeof window.performance != "undefined" && 
                          window.performance.navigation.type === 2 );
     if ( pagehistory ) {
    // back button event - Do whatever.   
      }
      });
  </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM