在JavaScript中禁用Opera功能键

时间:2010-06-16 03:48:29

标签: javascript keyboard-shortcuts opera

我正在为包含功能键的Web模拟器编写javascript代码。用户可以按下键盘功能键来处理模拟器中的内容,我使用stopPropagation和preventDefault javascript函数来停止/取消浏览器调用其功能键快捷键(例如F1将调用Firefox打开其帮助页面)并且代码工作正常在Firefox和Chrome下。但Opera没有工作,Opera调用我的功能并启动Opera帮助页面。我在这里使用最新的Opera 10.5。有人可以帮忙吗?

此代码位于FireFox javascript句柄中,并附在主体HTML onkeydown事件中:

function KeyHandler(ev)
{
   if(112==ev.keyCode) {InvokeF1();return CancelKey(ev);}
   if(113==ev.keyCode) {InvokeF2();return CancelKey(ev);}
   ...
}

function CancelKey(ev)
{
    ev.stopPropagation();
    ev.preventDefault();
}

IE使用了不同的代码用于CancelKey,它使用ev.CancelBubble = true和ev.returnValue = false。

2 个答案:

答案 0 :(得分:3)

要防止Opera中按键的默认操作,您需要在keypress事件中执行此操作。以下内容改编自my answer to this similar question

var cancelKeypress = false;

document.onkeydown = function(evt) {
    evt = evt || window.event;
    cancelKeypress = /^(112|113)$/.test("" + evt.keyCode);
    if (cancelKeypress) {
        return false;
    }
};

/* For Opera */
document.onkeypress = function(evt) {
    if (cancelKeypress) {
        return false;
    }
};

答案 1 :(得分:0)

我猜你正在使用onkeydown事件。它没有在Opera中提供所需的东西。 但在IE和Firefox中运行良好。所以你必须在opera中使用onkeypress事件。所以你应该在你的javascript中有一个单独的opera代码库,可以处理Opera功能键。