【问题标题】:Firefox onkeypress with ctrl keyFirefox onkeypress 与 ctrl 键
【发布时间】:2015-05-01 15:53:56
【问题描述】:

我有一个输入,我想要插入字符时的特定行为,但我想要像 ctrl+c 这样的快捷方式的默认行为ctrl+v.

这是html:

<input type="text" onkeypress="onInputKeyPress(event)" />

和 JavaScript:

function onInputKeyPress(event) {
    if (event.charCode >= 32) {
        // do some processing here       
        event.preventDefault();
    }
}

这在 IE 和 Chrome 中运行良好,但在 Firefox 中则不行。这是因为当我使用 ctrl+cctrl+v 时,onkeypress 没有得到在 IE 和 Chrome 上调用,但在 Firefox 中调用。

所以我尝试将此代码插入到我的处理程序的开头:

if (event.ctrlKey) {
    // leave default behavior for shortcuts
    return true;
}

现在,当我按 ctrl+c 时,不会调用我的自定义处理,但快捷方式仍然不起作用(文本不会被复制到剪贴板)。

我应该做更多的事情来强制 Firefox 执行默认操作吗?

【问题讨论】:

  • 我们能看到更多你的代码或减少的测试用例吗?这应该按照您描述的方式工作。注意:如果你只针对最近的浏览器,它可能应该使用“input”事件而不是“keypress”。
  • @RaphaelSchweikert 其余代码与此问题无关。代码与我提供的示例中的代码相同,除了有一些处理而不是注释 // do some processing here 并且当我的问题发生时甚至不会调用该代码。

标签: javascript html firefox dom-events


【解决方案1】:

好问题,我想这就是你要找的:

我建议你用它来复制到剪贴板:

var clipboard = require("sdk/clipboard");
clipboard.set("Lorem ipsum dolor sit amet");
var contents = clipboard.get();

来源:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/clipboard

【讨论】:

  • 谢谢,但这不是我要走的路……我需要保留所有快捷键,如 ctrl+c、ctr+v、ctr+a 等等……它没有“手动”完成所有这些是没有意义的。
  • 我明白了。我不认为这会覆盖默认值......如果这就是你的意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多