使用しているサファリのバージョン
jquery のサポートブラウザの互換性について
jQuery は、次のブラウザーを積極的にサポートしています。
Firefox Current - 1 version
Internet Explorer 6+
Safari Current - 1 version
Opera Current - 1 version
Chrome Current - 1 version
それらの問題は、jQuery のバグと見なして報告する必要があります。
次の既知の問題があります。
Mozilla Firefox 1.0.x
Internet Explorer 1.0-5.x
Safari 1.0-2.0.1
Opera 1.0-9.x
Konqueror
jQuery は通常、Konqueror および Firefox 1.0.x で動作しますが、定期的にテストしていないため、予期しないバグが発生する可能性があります。
キーイベントをテストできます
ここでテストしてみてください
またはここ
あなたはまだこのようにハッキングを試すことができます スタックオーバーフローの別の投稿から
キープレスは紛らわしいイベントです。keydown と keyup は、キーボードの特定のキーが押されているか、元に戻ったかを通知しますが、 keypress イベントは、画面に表示される文字を通知することになっているため、参照した jquery ドキュメントには次のように記載されています。
For example, a lowercase "a" will be reported as 65 by keydown and keyup, but as 97 by keypress.
さらに悪いことに、Safari は、画面に何かを書き込まないものに対してキー押下イベントをトリガーしません。そのため、矢印キーは機能しません。ただし、Firefox は矢印キーのキー押下イベントをトリガーします。どちらも仕様の合理的な実装であるため、どちらも変更されるとは思わないでください。そのため、キーダウンまたはキーアップに固執するという提案がありました。
ただし、キーが押されたときに (Firefox で) keypress イベントがどのように繰り返されるかを利用したいようで、これを矢印キーで実行したいと考えています。その場合は、keydown と keypress の両方を見るハンドラーを作成する必要があります。ブラウザが矢印キーを押したときに反応する 2 つの異なる方法を次に示します。
*Firefoxはキーダウン イベントを登録し、キー押下イベントも繰り返します (注: キーを 1 回押すだけで、キーダウン イベントとキー押下イベントの両方が登録されます)。
*Safariはキーダウン イベントを登録し、キーダウン イベントを繰り返す 矢印キーに対して適切に機能させ、キーの繰り返しを機能させる簡単なハックは次のとおりです。
function moveItem(evt) {
// do something with `this` and evt.keyCode here...
}
$(document.documentElement)
.keypress(function(evt) {
if ($.data(this, '_lastKeyEvent') != 'keydown') {
// since firefox will do both a keydown and a keypress for the first
// keydown, we ignore the very first keypress
moveItem.call(this, evt);
}
$.data(this, '_lastKeyEvent', 'keypress');
})
.keydown(function(evt) {
moveItem.call(this, evt);
$.data(this, '_lastKeyEvent', 'keydown');
});