戯言

つらつらと気づいたことを書いていきます。人狼とか。

emulateIE7と、$(window).keydownはNGな話


IE10を使ってると、「>>1」などの参照表示が出ないって指摘が以前にありました。表示には、overlibというjavascriptのライブラリを使っていたので、おそらく原因は、このライブラリが最近のIEのレンダリングとの互換性がないことです(詳しく調べてないです)。そこで、「IEの互換表示を使って下さい」ってことでお願いしていました。

昨日(7/13)のリリースで、IEではIE7表示を強制するようにしてみました。
変更箇所は、HTMLヘッダで以下を渡すようにしただけです。

X-UA-Compatible: IE=emulateIE7

これで、ブラウザがIE7標準準拠モードとして解釈してくれるので、互換表示に手動設定しなくとも、「>>1」などの参照表示が正常動作することが確認できました。



ところが、今度はShift+↑などが効かないとのご報告。
きっと、IE7互換では、動かないコードがあったのだろうと思ったんだけど、パッと見た感じでは特にバージョン依存になりそうなコードは書いてない。
で、さらに調べていたら、こんなのが。

http://bugs.jquery.com/ticket/10621

$(window).keydownイベントを拾えてないんですね。

W3C DOM2 では、イベントがwindowまでバブリングするようには定められてないので、$(window).keydownを拾えないのは、仕様としては間違いないみたい。
jQueryとしては、仕様とおりに作ってるので、悪くはない。



いろんなサイトや参考書で、$(window).keydownってのを見かけるけどね…。
やっぱり、サイトを参考にするのも良いけど、きちんと元の仕様も読まないとダメですね。

$(window).keydown を $(document).keydown に修正して解決。今度、修正版をリリースします。




関連記事
4:

いつもながら日本語でOK
でも見えないところで色々ご尽力いただいてて感謝感謝です!

2013.08.09 19:20 住民C #3XNUv4lM URL[EDIT]
5:管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2013.08.10 14:28 # [EDIT]

管理者にだけ表示を許可する