【JavaScript】「IE ‘onwheel’ in document 判定」でお困りの方へ
ホイール系のイベントについて調べる時、「ホイール系イベント2014年版クロスブラウザ」の記事をよく見かけますが、こちらの記事にある
var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
ですが、wheelイベント対応済であるIE9以降でも document に onwheel が無いようですので、例えば以下のようなコードだと IE9〜で false が返ります。
console.log('onwheel' in document) //wheel対応済のIE9以降で false
まぁ onmousewheel があるからいいんだけどね!とも思いますが、jquery.mousewheel.js を見た感じ、「document.documentMode」で判定しているらしいので、
console.log('onwheel' in document || document.documentMode >= 9)
とすると良いみたいです。ただ、Firefoxだとホイール量が少なかったり、Windows 8 や Windows 10 でタッチ操作した時の値と差異があってカオスなので、個人的には、
var mousewheelevent = 'MouseScrollEvent' in window ? 'MozMousePixelScroll' : 'onwheel' in document || document.documentMode >= 9 ? 'wheel' : 'mousewheel';
とした方が取り急ぎ安全かなとは思っています。