在浏览器

时间:2015-08-27 19:59:50

标签: javascript

是否有人知道如何禁用使用键盘上的“退格”键导航到您所在的上一页?

现在,我有一个发票类型的网络应用程序,如果用户(在Mac上)点击退格键移除表单字段中的元素,在到达输入项目的末尾后,如果他们再次点击退格键,它移动到之前浏览的页面,使它们丢失了输入的应用程序的数据。

1 个答案:

答案 0 :(得分:0)

@Sam答案的缺点是,如果您单击HTML元素(例如表格),则Backspace键仍会使您返回。仅当您单击没有任何HTML元素的“空白区域”时,此方法才有效。

我调整了Sam的答案,并从this answer中获取了代码以创建此解决方案。它并不能涵盖所有的极端情况,但是对于我的用例来说已经足够了。

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';
}