Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在浏览器中禁用退格导航_Javascript - Fatal编程技术网

Javascript 在浏览器中禁用退格导航

Javascript 在浏览器中禁用退格导航,javascript,Javascript,有人知道如何禁用使用键盘上的“backspace”键导航到上一页的功能吗 现在,我有一个发票类型的web应用程序,如果用户(在mac上)点击backspace删除表单字段中的元素,在到达输入项的末尾后,如果他们再次点击backspace,它将移动到先前浏览的页面,使他们丢失输入的应用程序的数据 window.onkeydown = function(e) { if (e.keyCode == 8 && e.target == document.body) e.prev

有人知道如何禁用使用键盘上的“backspace”键导航到上一页的功能吗

现在,我有一个发票类型的web应用程序,如果用户(在mac上)点击backspace删除表单字段中的元素,在到达输入项的末尾后,如果他们再次点击backspace,它将移动到先前浏览的页面,使他们丢失输入的应用程序的数据

window.onkeydown = function(e) {
  if (e.keyCode == 8 && e.target == document.body)
    e.preventDefault();
}
说明:退格键具有键代码8。调用“preventDefault”意味着事件不会导致按backspace键的默认行为(即返回页面)。只有当事件的目标是文档的主体时,才会发生这种行为


编辑:

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

我是否只是将其添加到表单字段之前的元素中?这会干扰文本框中的退格。我对这个问题的理解是,Steven只是试图防止使用backspace在页面堆栈中向后导航,但是应该允许使用backspace的其他用途。2.在上面的评论中,我希望用户仍然能够使用backspace,只是不能使用backspace导航离开页面…好了-现在可以正常使用backspace键了。这应该放在标签里,最好放在你的电脑里。