2012-02-13 7 views
1

このコードスニペットを使用していました。私は最近のGoogle Chromeのアップデートがそれを破ったと思う。他の誰かがこれを見ますか?PCのGoogle Chromeがdocument.createEvent( "TouchEvent")で成功しています...?

function DenyIfTablet() { 
    try { 
     document.createEvent("TouchEvent"); 
     alert("Silverlight not supported on touch-screen devices."); 
     window.location = document.referrer; 
    } 
    catch(exception){ 
     //OK to continue. 
    } 
} 

IE9では、例外がスローされ、アラート/リダイレクトは発生しません。

Chrome 17.0.963.43の場合、例外はではなく、がスローされ、タッチスクリーンデバイスを使用していなくてもリダイレクトされます。

私はここで何か不適切なことをやっているのですか、またはChromeのアップデートで敷物が私の下に引き出されただけですか?

答えて

5

はい、Chrome 17と18のテストでは動作しませんでしたが、19で再度動作します。ただし、ブラウザはさまざまな方法で十分に堅牢ではありませんタッチに対する彼らの支持を表明する。

modernizr人はモバイルブラウザ、ここでデスクトップのバージョンの数百を超える結果と、この研究の束をした:

http://modernizr.github.com/Modernizr/touch.html

私の理解があることのために(良くも悪くもほとんどの場合、悪化する)、サポートを検出するための銀色の弾丸(またはいつかそんなに標準的なやり方で合意された方法)はありません。

modernizrがサポートを検出した主な方法は

('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch 

ですが、その後、彼らはそれが(それは少しだ余分に確認するために効果がある場合は「タッチ対応のメディアクエリとテストとの要素を注入するために進みます追跡するのは難しいですが、sourceをチェックしてください)。

したがって、私はontouchstartのテストに切り替えることを検討していますが、実際にはそれを正しく取得したい場合は、modernizrを使用します。

+0

:)うん、合意した。私たちはすでに、近代化ツールをWebアプリケーションのリファレンスとして取り入れています。私はちょうど数週間で取り出されるコードで、「素早く汚れた」何かをやっていました。そんなに素早くお尻に噛み付いているのを見て衝撃を受けただけでした! :) –

+0

このクールクはもう一度戻っているようだ(ちょうどChrome 32でそれに走った)... modernizrはうまくそれを解決した! – CD001

関連する問題