当前位置: 首页 > 面试题库 >

如何防止Backspace键回退?

伏德义
2023-03-14
问题内容

在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错误的背后给予支持以更改Webkit中的此行为


问题答案:

这段代码至少在IE和Firefox中解决了该问题(尚未测试过其他任何工具,但即使在其他浏览器中也存在问题,我也给了它合理的工作机会)。

// Prevent the backspace key from navigating back.
$(document).unbind('keydown').bind('keydown', function (event) {
    if (event.keyCode === 8) {
        var doPrevent = true;
        var types = ["text", "password", "file", "search", "email", "number", "date", "color", "datetime", "datetime-local", "month", "range", "search", "tel", "time", "url", "week"];
        var d = $(event.srcElement || event.target);
        var disabled = d.prop("readonly") || d.prop("disabled");
        if (!disabled) {
            if (d[0].isContentEditable) {
                doPrevent = false;
            } else if (d.is("input")) {
                var type = d.attr("type");
                if (type) {
                    type = type.toLowerCase();
                }
                if (types.indexOf(type) > -1) {
                    doPrevent = false;
                }
            } else if (d.is("textarea")) {
                doPrevent = false;
            }
        }
        if (doPrevent) {
            event.preventDefault();
            return false;
        }
    }
});


 类似资料:
  • 如果我创建了一个简单的应用程序,其中有一个活动,其中包含一个EditText,我会这样做 这样可以防止键盘出现(在我的Android5.0和7.1测试中)。这就是我想要的,正如这些问题所要求的: 从EditText禁用软键盘,但仍允许复制/粘贴 如何为特定活动禁用Android软键盘 Android:在所有编辑文本中禁用软键盘 如何在编辑文本时禁用键盘弹出 禁用编辑文本上的键盘 源代码是 但是我看

  • 问题内容: 调用的方法: 1. Struts Action 2.服务类方法(由@Transactional注释) 3. Xfire Web服务调用 包括struts(DelegatingActionProxy)和事务在内的所有内容都使用Spring进行配置。 持久性是通过JPA / Hibernate完成的。 有时,Web服务将引发未经检查的异常。我捕获了此异常并抛出了一个已检查的异常。我不希望事

  • 问题内容: 我正在使用BeautifulSoup解析HTML表,如下所示: 我将多个语句重构为一个函数: 像这样被称为: 我的问题是,当函数找不到匹配项时,它将返回,将被打印出来。这是不希望的。 有什么方法可以使此函数仅在满足if条件时才返回值? 问题答案: 如果在退出函数调用时未指定return ,Python将始终返回。您的选择是: 如果不满足条件,则返回其他内容。 如果返回则忽略该函数 选项

  • 问题内容: 我有一个可用作地图键的类型,但我想防止这种情况的发生。我以为如果该类型包含一个私有成员,则其他软件包将无法实现,但这似乎仍然可行。使类型不能用作映射键的最佳方法是什么? 问题答案: 我认为禁止将类型用作键没有任何好处。它只是一个可能会使用或可能不会使用的选项,其类型不会因为您禁止将其用作地图键而变得更好,更小或更快。 但是,如果您想这样做:规格:地图类型: 该比较操作符 ==和=必须为

  • 我有一个(我使用角2材料)如下,我正在调用一个回车键上的函数。但是从用户体验的角度来看,在submit函数清除表单之前,在按下enter键后,文本框的大小仍然在变化,即文本区域中显示了新的一行。如何停止enter键更改文本区域的大小?</p