【问题标题】:disable Opera function key in javascript在 javascript 中禁用 Opera 功能键
【发布时间】:2010-06-16 03:48:29
【问题描述】:

我正在为包含功能键的网络模拟器编写 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。

【问题讨论】:

  • 你能给我写在 IE 和 Firefox 中运行良好的代码 sn-p 吗?
  • 把代码sn-p
  • 请检查我发布的答案。

标签: javascript keyboard-shortcuts opera


【解决方案1】:

要防止 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;
    }
};

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • keydown 事件在 Opera 中确实有效。您只是无法阻止浏览器对该事件的默认操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多