首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Opera中的原型观察事件问题

Opera中的原型观察事件问题
EN

Stack Overflow用户
提问于 2011-02-04 23:03:38
回答 2查看 561关注 0票数 5

我正在使用Prototype并在window.document上做Event.observe。

我正在捕获enter (keyCode 13)和alt+f (altKey && keyCode=70)。

我的代码在firefox,IE和chrome上运行的很好。使用Opera no.Enter被捕获,但仅当我的焦点不在任何文本输入中时。Alt+F完全不起作用。

是原型中的bug,还是我需要在Opera上做一些“额外”的事情才能继续?正如我所说的,在所有其他浏览器中,我的代码都可以工作……

EN

回答 2

Stack Overflow用户

发布于 2011-05-27 11:38:41

首先,下面是一个有用的资源:http://unixpapa.com/js/key.html

其次,你应该知道keydown (或者keyup)和keypress是有区别的。按键通常不允许修改键,尽管它允许一些类似于Opera的控件。为了保持跨浏览器的一致性,最好使用keydown。

我在Opera11.10中得到keyCode === 13,无论是否输入文本框,也不管是否使用Prototype,如下所示:

代码语言:javascript
复制
Event.observe(document, 'keydown', function (e) {
    alert(e.charCode+'::'+e.keyCode);
});

或者直接使用本机方法(使用IE的attachEvent ):

代码语言:javascript
复制
if (document.addEventListener) {
    document.addEventListener('keydown', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    }, false);
}
else { // IE
    document.attachEvent('onkeypress', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    });
}

然而,除非与控制键或功能键相结合,否则文本框中确实无法检测到alt (尽管这在Chrome或IE中不起作用)。这可能是因为Windows使用alt来访问应用程序菜单栏。

您可以尝试使用ctrl键和preventDefault() (以避免默认行为,如ctrl-f执行页面查找),尽管这可能会惹恼您的用户,他们可能不希望您的页面禁用他们的浏览器行为。

票数 2
EN

Stack Overflow用户

发布于 2012-01-04 07:38:19

Alt-F激活菜单,Opera不让JavaScript处理此按键操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4899453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档