2012-10-10

Touch Eventを実装したらいろんなサイトがぶっ壊れた

以前からMozTouchってのがFirefoxのWindows版だけサポートしてたんだけど、Firefox 18 (Windows版)で、W3C Touch Eventのサポートをするコードを突っ込んだ。僕がイニシャルコードを書いて、jmartinsに直してもらったんだけど。なのでWindows 7以降でタッチイベントをサポートしたデバイス (ThinkPad T400sとか) だとデスクトップ版でもタッチイベントが使えるようになった。(ChromeのWindows版も最近のバージョンからサポートしてるよ!)

これを実装したら、地図がマウスでスクロールできない(意味がわからない)、スクロールバーが表示される(意味わからない)、ビデオが再生できない(意味わからない)というバグレポートが多発してるんで今見てるんだけど(Mozilla側のコードじゃなくて、レポートされた各サイトのJavaScriptをね)、見てるサイトすべてがTouch Eventが存在するかどうかでいろんな動作を変えてて面白いことになってる。

たとえばfoxnews.comだと、createTouchがDOMに存在するかどうかで再生するビデオ形式を変えるというトンデモコードが存在する。これが存在するかどうかでFlashを使って再生するかMP4をそのまま再生するか変えてて、FirefoxはMP4を再生できないからエラーが表示されるという感じになってる。ChromeでもTouch Eventがサポートされてるけど、タッチデバイスが存在する場合はMP4の動画が再生されて、存在しない場合はFlashが使われるというユーザーサポート泣かせの状態になってるんだよね。

こんな感じでブラウザを判別してたなんて思いもよらなかった。