0

我正在开发一个 Javascript 库(AnyList),用户可以在其中按 ESC 键中止编辑输入字段。这是通过捕获 ESC keyup 事件(使用 jQuery)来实现的:

inp_elem.on("keyup", init_opt, $.proxy(this._processKeyup,this));
...
$.any.DataView.prototype._processKeyup = function (event)
{
  if (event.preventDefault)
    event.preventDefault();
  if (event.type == "keyup" && event.which == 27) { // ESC. In Vivaldi, we never get here.
    ...
  }
  ...

这在 Firefox、Edge、Chrome 等中可以正常工作,但在 Vivaldi 浏览器中却不行——永远不会调用 _processKeyup 方法。

Vivaldi 使用 ESC 键来停止加载 html 页面,但其他浏览器也是如此,即使我删除了 ESC 键盘映射(Vivaldi 中有一个选项),我也无法在我的Javascript。

有人可以帮忙吗?我真的很喜欢 Vivaldi 浏览器,并希望看到它成功,但这种行为不必要地破坏了我的脚本并且非常烦人。

4

1 回答 1

1

看来Vivaldi浏览器正在捕捉keyUp事件,所以你最好改用keyDown事件。

一个可行的解决方案可能是这样的:

elem.onkeydown = function (event) {   
    if (event.type === "keydown" && event.key === 'Escape') {
        alert('esc - everywhere'); 
        }
}
于 2021-10-21T21:05:39.650 回答