« Windows Updateで0x80070490謎のエラー(情報求む!!) | トップページ | Windows版Safari3β版のalertでは、英数字が一定文字数以上にわたって連続するとalertを正しく表示できない不具合 »

2007/06/29

Windows版Safari3Betaで、JavaScriptでCtrlキーの取得が出来る時と出来ない時がある理由



Windows版Safariでonkeydownによって、「e.ctrlKey」を取得できる場合とそうでない場合があることに気づきました。プログラムは以下のような、いかにも単純なプログラムです。

Safariの場合、Ctrlキー単独では、何のalertも表示されませんが、それはまあ良いとして、「Ctrl+Aを押せば、思いっきりテキストの全選択になります」し、「Ctrl+Tを押せば、新しいタブが開き」ます。Ctrl+Pなら印刷設定画面が表示されます。何のアラートも表示されません。

ところが、一方で、「Ctrl+B」や「Ctrl+U」なら「Ctrlキーが押されました。」というアラートをしっかりと表示させてくれます。結局、Widnows版Safariでは、JavaScriptでの取得の前に、各メニューに割り当てられたブラウザのショートカットが優先されてしまっているのです。Mac版Safariでは、このようなことはありません。Mac版Safariでは、コマンドキーやCtrlキーが押された旨は取得できます(が、イベントのキャンセルも普通にはできないので、ブラウザのメニューに割り当てられたショートカットもalertの後にやはり実行されます)。

上のサンプルコードを実際に動かすために作成したサンプルページはこちらです。

Windows版SafariはMac版SafariとJavaScriptの面でも挙動が異なるところが結構ありそうです。既に記事化したものとしては、

●Windows版Safari(β版)で、改行を含む文字列をalertで表示させると変になる不具合
http://shimax.cocolog-nifty.com/search/2007/06/windowssafarial_63f5.html

●Windows版Safariの不具合(日本語・お気に入り関連以外。SSLの証明書問題など)
http://shimax.cocolog-nifty.com/search/2007/06/windowssafariss_2387.html
の中の1番で書いた問題ですが、document.lastModifiedがサーバの設定にかかわらず、常に空の文字列が戻ってきます。この2つの問題と合わせると、最低3つの点において挙動が異なるということになります。

|

« Windows Updateで0x80070490謎のエラー(情報求む!!) | トップページ | Windows版Safari3β版のalertでは、英数字が一定文字数以上にわたって連続するとalertを正しく表示できない不具合 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67411/15596489

この記事へのトラックバック一覧です: Windows版Safari3Betaで、JavaScriptでCtrlキーの取得が出来る時と出来ない時がある理由:

« Windows Updateで0x80070490謎のエラー(情報求む!!) | トップページ | Windows版Safari3β版のalertでは、英数字が一定文字数以上にわたって連続するとalertを正しく表示できない不具合 »