我怎么能检测到我的智能设备是可触摸的?

时间:2013-11-26 15:12:37

标签: java javascript ios html5 windows-phone-8

我有一个应用程序,其中一个人必须通过使用智能设备的触摸屏来使用控制器。所以我写了一些代码来检测智能设备是否有触摸屏,如果不是应用程序给出错误信息。

代码是这样的:

var canvas,
    c,
    container,
    // is this running in a touch capable environment?
    touchable = 'createTouch' in document,
    touches = []; // array of touch vectors
var firstboot = true;
lastFrameTimeStamp = new Date().getTime();

function init() {
    if (touchable) {
        setupCanvas();
        setInterval(draw, 1000 / 24);
        canvas.addEventListener('touchstart', onTouchStart, false);
        canvas.addEventListener('touchmove', onTouchMove, false);
        canvas.addEventListener('touchend', onTouchEnd, false);
        window.onorientationchange = resizeCanvas;
        window.onresize = resizeCanvas;
    }
    else {
        setupCanvas();
        c.textAlign="center";
        c.fillStyle = '#000';
        c.font="18px Arial";
        c.fillText("Helaas, de controller is alleen beschikbaar voor toestellen met een touchscreen.",canvas.width/2,canvas.height/2);   
    }
}

对于使用Android IOS的​​智能设备,代码工作正常并检测到触摸屏。但是当我在Windows 8手机(诺基亚lumia 920)上尝试控制器时,我收到错误消息,我的手机没有触摸屏。

那我怎么能改变我的代码,以便我的应用程序检测到我的Windows手机是可触摸的?

2 个答案:

答案 0 :(得分:0)

我建议尝试jquery插件Modernizer

如果这有效,你可以从那里得到一些想法。

答案 1 :(得分:0)

Modernizr.touch测试仅指示浏览器是否支持触摸事件,触摸事件不一定反映触摸屏设备。例如,Palm Pre / WebOS(触摸)手机不支持触摸事件,因此无法通过此测试。此外,Chrome(台式机)过去常常对此表示支持,但此后一直在纠正。 Modernizr还通过媒体查询测试多点触控支持,这是Firefox 4为Windows 7平板电脑公开的方式。

参考这篇文章 Touch event