繁体   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