代码之家  ›  专栏  ›  技术社区  ›  Ilya Birman

Opera/Mac:覆盖CMD+S事件?

  •  2
  • Ilya Birman  · 技术社区  · 15 年前

    看起来opera/mac不允许在用户按下s时覆盖操作(默认值当然是save page)。我发现我的旧剧本不管用。它通过ajax将表单内容保存到服务器。

    这里有一个onkey*处理程序:

    key = ev.keyCode
    if (!key) key = ev.charCode
    
    if (ev.type == 'keypress' && 115 == key && ev.ctrlKey) return false
    if (83 == key && ev.ctrlKey) {
      if (ev.type != 'keypress') save_text ()
      return false
    }
    

    opera/mac的第一个奇怪之处是它生成了ctrlkey on–key而不是实际的 Ctrl 关键。所以在Safari中,这个可以完美地用我的动作代替标准动作。但在opera中,它完全忽略了s,因为ctrlkey是“for it”,但是无论您做什么,它都会带来标准的保存对话框。

    当我按下键和S键键17时,我试图监视Opera中的所有键*事件序列,然后用键码17键按下,这两次都是在按下后发生的。按S键后根本不会生成任何事件。

    看来我运气不好。有人知道如何强迫Opera让我重写吗?-)

    2 回复  |  直到 15 年前
        1
  •  2
  •   Nicolás    15 年前

    我称之为特写。它 不应该 让你凌驾于一切之上。接下来,您将询问如何在Linux上重写ctrl-q,以便它不会关闭浏览器…

        2
  •  1
  •   hallvors    15 年前

    我手头没有mac,但我希望从keydown事件(可能是s事件,如果触发的话)中使用preventDefault()来停止此操作。

    如果你到这里,勾选“防止默认”框并按command-s,你会得到一个保存对话框吗?

    http://cross-browser.com/x/examples/key_events.php