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を上書きさせる方法を知っている人は誰ですか? :-)
はい、あります。 (*必須 - 少なくとも15文字) –
これを上書きしても実際には機能しません。おそらくhttps://bugs.opera.com/wizard/でレポートを投げてください。 – hallvors