「Google Chrome」で、「chrome://flags」をアドレスバーに入れて「タッチ イベント」を「有効」の状態にしていた場合に、以下の現象が発生しました。
A.「ontouchstart」「ontouchmove」「ontouchend」などのプロパティが存在する。
B.しかし、それらのプロパティに関数を登録しても、そのイベントは呼び出されない。
Aの結果、モバイルのタッチデバイスかどうかを判定するため、「"ontouchstart" in window」のような判定をした場合、「true」(タッチ対応端末)になります。
しかし、Bの結果、「ontouchstart」に関数を登録しても、画面のクリックでは何も起きません。
「chrome://flags」の「タッチ イベント」は、通常では「自動設定」です。これを「有効」にすると、おそらくタッチイベントに対応していなくても「ontouchstart」「ontouchmove」「ontouchend」などのプロパティを作るようです。
そのため、モバイル用にタッチを高速化するJSライブラリによっては、クリックができなくなります。具体的には、「tappable.js」でこの問題が発生しました。
この「tappable.js」は、3年以上更新がないライブラリなので、仕方がないと思います。Windows8のリリースが2012年夏ですし。
tappable - github というわけで「fastclick」に変更して、問題がないことを確認しました。
fastclick - github あまり発生しない現象かもしれませんが、記録を残しておきます。