2009-03-09 8 views
2

Opera/Macは、ユーザーが⌘Sを押したときにアクションをオーバーライドさせないように見えます(デフォルトはもちろん、ページを保存しています)。私の古いスクリプトはそれで動作しないことがわかった。フォームの内容をAjax経由でサーバーに保存します。ここでOpera/Mac:cmd + Sイベントをオーバーライドしますか?

は*ハンドラ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 
} 

オペラ/マックの最初のすごみは、⌘キーの代わりに、実際のCtrlキーにctrlKeyを生成していることです。だからSafariでは、これは標準の^ Sアクションを私のものに置き換えて完全に動作します。しかし、Operaでは^ Sは完全に無視されます。なぜなら、ctrlKeyはそのための⌘ですが、⌘Sはあなたが何をしていても標準の保存ダイアログを表示します。

⌘Sを押したときにOperaのすべてのキー*イベントシーケンスを実際に監視しようとしていましたが、keyCode 17でキーダウンしてからkeyCode 17でキーを押すと、⌘を押した後に起こります。 Sを押しても全くイベントは発生しません。

私は運が尽きているようです。 Operaに強制的に⌘Sを上書きさせる方法を知っている人は誰ですか? :-)

答えて

2

私はそれを機能と呼んでいます。それははすべてと何かをオーバーライドできません。次に、Linux上でCtrl-Qを無効にする方法を尋ねます。

1

Macは便利ではありませんが、keydownイベントからpreventDefault()を使用するとこれをやめるためには、おそらくSの1つ、解雇されれば)。

ここに行く場合は、「デフォルトを抑止する」チェックボックスをオンにしてcommand-sを押します。保存ダイアログが表示されますか?

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

+0

はい、あります。 (*必須 - 少なくとも15文字) –

+0

これを上書きしても実際には機能しません。おそらくhttps://bugs.opera.com/wizard/でレポートを投げてください。 – hallvors

関連する問題