1

我正在使用 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 运行时错误:无法添加动态内容。”</p>

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

4

2 回答 2

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');
        }
    }

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

于 2012-08-24T12:57:52.233 回答
0

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

那说明:

  1. 如果您要动态添加 Modernizr,只需将 Modernizer 作为脚本标签包含在 HTML 中,而不是动态添加
  2. 您需要使用Windows.Devices.Input.PointerDevice.GetPointerDevices();获取设备,然后使用您提供的链接中的功能查看哪些设备支持触摸。(这里有详细信息)
  3. 您可以通过查看事件对象上的pointerType 属性来检测特定输入事件用于哪种类型的设备(例如 onmspointerup 等) 。
于 2012-08-23T13:13:14.803 回答