簡體   English   中英

在瀏覽器中禁用退格導航

[英]Disable backspace navigation in browser

有誰知道如何禁用使用鍵盤上的“退格”鍵導航到上一頁的功能?

現在,我有一個發票類型的Web應用程序,如果用戶(在Mac上)按下退格鍵以刪除表單字段中的元素,則在到達輸入項的末尾后,如果他們再次按下退格鍵,它將移至先前瀏覽過的頁面,使他們丟失了所輸入應用程序的數據。

window.onkeydown = function(e) {
  if (e.keyCode == 8 && e.target == document.body)
    e.preventDefault();
}

說明:退格鍵的鍵碼為8。調用“ preventDefault”意味着該事件不會導致按下退格鍵的默認行為(即,向后導航頁面)。 僅當事件的目標是文檔的正文時,才會發生此行為。

編輯: jsfiddle示例

@Sam答案的缺點是,如果您單擊HTML元素(例如表格),則Backspace鍵仍會使您返回。 僅當您單擊沒有任何HTML元素的“空白”時,它才起作用。

我調整了Sam的答案,並從該答案中獲取了代碼以創建此解決方案。 它並沒有涵蓋所有的極端情況,但是對於我的用例來說已經足夠了。

function disableBackspaceNavigation() {
  window.onkeydown = function(e) {
    if (e.keyCode == 8 && !isTextBox(e.target)) e.preventDefault();
  }
}

function isTextBox(element) {
  var tagName = element.tagName.toLowerCase();
  if (tagName !== "input") return false;

  var typeAttr = element.getAttribute('type').toLowerCase();
  return typeAttr === 'text';
}

暫無
暫無

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

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