windows 8 metro style app - 找到基于鼠标或触摸的执行

时间:2012-08-23 12:14:58

标签: javascript touch windows-8

我正在使用HTML 5和JavaScript为Windows 8 Metro风格应用创建一个应用。我需要在应用程序启动时找到它是触摸基础处理还是基于鼠标的处理(智能手机或台式计算机)。

我尝试过以下事情。

1)如下, http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.pointerdevicetype.aspx

但是我们不确定在函数getPointerDeviceType(pdt)中将“pdt”传递给什么

尝试了各种各样的事情,但它只给我“未定义”。

2)我们尝试使用Modernizr js框架来查找以下代码

    if (Modernizr.touch){
       // bind to touchstart, touchmove, etc and watch `event.streamId`
    } else {
       // bind to normal click, mousemove, etc
    } 

但是当我们插入最新的“Modernizr”的js代码时,它为appendchild命令提供了安全性错误。就像是 “0x800c001c - JavaScript运行时错误:无法添加动态内容。”

任何人都可以告诉我们如何实现,以便根据条件,我们可以执行基于触摸和基于鼠标的应用程序执行代码。

2 个答案:

答案 0 :(得分:1)

刚刚解决了。可以对其他人有用。

我把下面的代码放在哪里,我需要找到哪个css我需要申请。

    helloButton.addEventListener("MSPointerDown", buttonClickHandler, false);

这是功能:

    function buttonClickHandler(eventInfo) {

        if (eventInfo.pointerType == eventInfo.MSPOINTER_TYPE_TOUCH) {
            // Do something for touch input only
            console.log('Touch');
        } else {
            // Do something for non-touch input
            console.log('Mouse');
        }
    }

您可以根据条件设置代码。

答案 1 :(得分:0)

您假设应用程序在执行期间只有一种输入类型是错误的 - 我一直在设备上的鼠标,键盘和触摸之间进行切换。

那说:

  1. 如果您要动态添加Modernizr,只需将Modernizer作为脚本标记包含在HTML中,而不是动态添加
  2. 您需要使用Windows.Devices.Input.PointerDevice.GetPointerDevices();来获取设备,然后使用您提供的链接中的功能查看哪些设备支持触摸。 (详情here
  3. 您可以通过查看事件对象上的pointerType property来检测特定输入事件所针对的设备类型(例如onmspointerup等)。