2014-01-29 78 views
0

在我的Windows 8桌面PC(非觸摸屏)上,Firefox 26錯誤地將自己報告爲觸摸屏設備,而其他瀏覽器如Chrome & IE不支持?Windows 8上的Firefox作爲觸摸設備報告

使用以下不同的JavaScript片段,Firefox始終返回true,並且Chrome始終爲false。

jQuery.support.touch 

這段代碼的詹姆斯https://stackoverflow.com/a/4819886/498187

function is_touch_device() { 
    return 'ontouchstart' in window // works on most browsers 
     || 'onmsgesturechange' in window; // works on ie10 
}; 

我的問題是,有沒有更好的方法來檢查觸摸屏設備,一個Firefox會明白嗎?

回答

2

您的代碼應該在大多數情況下,在Firefox上工作也沒關係,'ontouchstart' in window應該評估在Firefox假太,除非設置了「dom.w3c_touch_events.enabled」到「1」的偏好。

在Firefox的地址欄中鍵入about:config並搜索此屬性。如果它是1,只需將其設置爲0,然後表達式'ontouchstart' in window應該計算爲false(也許您需要重新啓動Firefox)。

您不必在過去自己將此選項設置爲'1'。如果您曾經使用Firefox的開發人員工具來模擬觸摸事件,那一定是已經做到了。但平均Firefox用戶不會這樣做,所以我不會擔心它:)

有bugzilla relevant issue raised

0
if ('ontouchstart' in window 
    || navigator.maxTouchPoints > 0 
    || navigator.msMaxTouchPoints > 0 
) { 
     /* Browser with either Touch Events of Pointer Events 
      running on touch-capable device. */ 
}