禁用javascript中的Opera函数键

禁用javascript中的Opera函数键,javascript,keyboard-shortcuts,opera,Javascript,Keyboard Shortcuts,Opera,我正在为包含函数键的web仿真器编写javascript代码。用户可以按键盘功能键在emulator中处理某些内容,我使用stopPropagation和preventDefault javascript函数停止/取消浏览器调用其功能键快捷方式(例如F1将调用Firefox打开其帮助页面),代码在Firefox和Chrome下运行良好。但Opera不起作用,Opera调用我的函数并启动Opera帮助页面。我用的是最新的Opera 10.5。有人能帮忙吗 此代码位于FireFox javascri

我正在为包含函数键的web仿真器编写javascript代码。用户可以按键盘功能键在emulator中处理某些内容,我使用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。

我猜您使用的是
onkeydown
事件。它没有给你歌剧中需要的东西。
但在IE和Firefox中运行良好。因此,您必须在opera中使用
onkeypress
事件。因此,您的javascript中应该有一个单独的opera代码库,可以处理opera功能键。

要防止opera中按键的默认操作,您需要在
keypress
事件中执行。以下内容改编自:


你能给我写一段在IE和Firefox中运行良好的代码段吗?放代码段请检查我发布的答案。
keydown
事件在Opera中确实有效。您无法阻止浏览器对该事件执行默认操作。
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;
    }
};