看來你真的想要做的是測試支持觸控,嘗試Detecting touch: it’s the ‘why’, not the ‘how’。
一個共同的建議是:
if (document && document.element && 'ontouchstart' in document.documentElement) {
...
}
但是,很可能在某些瀏覽器中失敗。較長的方法,雖然可能沒有更準確,是測試活動的支持直接:
/* Feature tests for TouchEvent and GestureEvent modules
* implemented in Mobile Safari on iPhone
*
* The TouchEvent module is a draft (18/08/2008) that supports:
*
* touchstart
* touchmove
* touchend
* touchcancel
*
* The GestureEvent module is a draft (18/08/2008)
* that supports:
*
* gesturestart
* gesturechange
* gestureend
*
* The functions require support for try..catch, introduced
* in ECMA-262 ed3, JavaScript 1.4 and JScript 5.1.5010.
* Equates to Navigator 4.0 or later and IE 5.1 or later
* (http://pointedears.de/scripts/es-matrix/)
*
* If W3C DOM 2 Event document.createEvent is supported,
* return either true or false,
* otherwise return undefined.
*/
function touchSupported() {
if (document && document.createEvent) {
try {
document.createEvent('TouchEvent');
return true;
} catch (e) {
return false;
}
}
}
function gestureSupported() {
if (document && document.createEvent) {
try {
document.createEvent('GestureEvent');
return true;
} catch (e) {
return false;
}
}
}
這是寫在2008年,我才真正用它在Safari和iPhone雖然它似乎在其他地方工作。徹底測試。
在我看來,你的問題是觸摸用戶界面與光標用戶界面,這不一定與移動設備和PC(大概是桌面)相關。也許提供光標(或指點設備)的觸摸和設置的設置,並讓用戶選擇一個或另一個。 – RobG
所以我做到了這一點(理論上聽起來正確),但在實踐中我該如何去做呢?我嘗試使用Modernizr.touch來識別某些瀏覽器是否支持觸摸,並且它不起作用(或者我不期望它如何工作)。 – a2zCribbage
我有一個簡單的觸摸支持功能測試,我會在幾個小時後發佈。 – RobG