在過去,檢測設備是否支持在JavaScript觸摸事件的時候,我們可以做這樣的事情:如何檢測JavaScript中的設備觸摸支持?
var touch_capable = ('ontouchstart' in document.documentElement);
然而,谷歌Chrome(17.x.x +)上述檢查返回true
,甚至如果底層設備不支持觸摸事件。例如,運行在Windows 7上面的代碼返回true,因此,如果我們喜歡的東西結合起來:
var start_evt = (touch_capable) ? 'ontouchstart' : 'onmousedown';
在谷歌Chrome,永遠不會觸發事件,因爲我們結合ontouchstart
。總之,有沒有人知道一個可靠的方法來規避這一點?我目前運行下面的檢查:
var touch_capable = ('ontouchstart' in document.documentElement && navigator.userAgent.toLowerCase().indexOf('chrome') == -1)
這是很不理想......
正確 - 雖然我有(並且愛)平板電腦,但有時我有鼠標,我不害怕使用它。 –
謝謝。這實際上是一個jQuery插件,我寧願不添加Modernizr的先決條件。然而,出於某種原因'window.DocumentTouch &&文檔instanceof DocumentTouch'返回'undefined' ... – BenM
@BenM你知道可以構建一個Modernizr的自定義下載,它只包含你需要的測試嗎? – Alnitak