【发布时间】:2010-12-02 11:40:25
【问题描述】:
在 IE 上,我可以使用(非常非标准,但可以工作的)jQuery 来做到这一点
if ($.browser.msie)
$(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});
但是是否有可能以适用于 Firefox 的方式进行,或者以跨浏览器的方式进行以获得奖励?
记录在案:
$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });
什么都不做。
$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });
解决了这个问题,但是让退格键在页面上无法使用,这比原来的行为还要糟糕。
编辑: 我这样做的原因是我不是在创建一个简单的网页,而是一个大型应用程序。仅仅因为你在错误的地方按了退格键就失去了 10 分钟的工作时间,这是非常令人讨厌的。通过防止退格键向后导航,防止错误与烦人用户的比率应远高于 1000/1。
EDIT2:我不是试图阻止历史导航,只是意外。
EDIT3:@brentonstrines 评论(因为这个问题很受欢迎,所以移到这里):这是一个长期的“修复”,但你可以支持Chromium bug to change this behavior in webkit
【问题讨论】:
-
因为退格键过载。您可能没有注意到它,但您可能一直使用它来擦除您刚刚在文本字段中输入的字母。我的一些客户遇到了导致页面返回的问题,所以这是有用的信息。除了你们这些小丑之外,没有人知道退格键应该返回一个页面。这是我从来不知道的事情,对于浏览器来说,这是完全的敌对行为。我认为所有页面都应该禁用这种行为。
-
为什么人们觉得这很奇怪?使用退格键导航是一个非常愚蠢的快捷方式!有很多文本字段,用户可能想要从中删除文本 - 想象一下,有一个很长的 SO 答案,切换到另一个窗口检查某些内容,然后您返回并错误单击编辑区域,按退格键删除一个单词,然后突然,浏览器返回一个页面,你可能会丢失刚刚写的所有内容。
-
我为什么要这样做?我不是在创建一个网站,而是一个 Web 应用程序。某些输入字段是只读的,在这种情况下它们看起来是可编辑的,但如果您按退格键,则会离开页面。打算向后导航的退格键与尝试擦除某些内容的退格键的比率可能远小于 1 / 1000。
-
问题是如何做到这一点,而不是你对它是否是一个好主意的看法。在不了解项目细节的情况下,您的意见毫无意义。我的客户已经特别要求我的一个项目的这种行为和一个真正的答案,而不是“你为什么要这样做?”会有帮助的。
-
这是一个长期的“修复”,但您可以支持 Chromium 错误以更改 webkit 中的这种行为:code.google.com/p/chromium/issues/detail?id=144832
标签: javascript jquery internet-explorer firefox cross-browser