DojoToolkit不工作时SurfacePro上的触碰/敲击事件

DojoToolkit不工作时SurfacePro上的触碰/敲击事件,dojo,dgrid,Dojo,Dgrid,我有以下代码(请参阅): 我的HTML <div id="myElement" style="padding: 20px; background: #abcdef;">tap me (only works with touch device)</div> 我想使用dgrid touch util检测一个点击事件(我的内容在dgrid中,示例被剥离到必要的元素)。我无法使用触摸。按,因为在表格中滚动时会触发元素的“单击” 我现在有了一个使用dojo/has“功能检测”的

我有以下代码(请参阅):

我的HTML

<div id="myElement" style="padding: 20px; background: #abcdef;">tap me (only 
works with touch device)</div>
我想使用dgrid touch util检测一个点击事件(我的内容在dgrid中,示例被剥离到必要的元素)。我无法使用
触摸。按
,因为在表格中滚动时会触发元素的“单击”

我现在有了一个使用dojo/has“功能检测”的工作(在我看来很难看)“解决方案”(在桌面、IPhone/Safari和SurfacePro上),如下所示:

require({...}, ["dojo/on", "dojo/has", "dojo/touch", "dgrid/util/touch"], function(on, has, touch, touchUtil){

    if (has("touch")) {
        if (has("safari")) {
            clickEvent = touchUtil.selector(".dgrid-row-table", touchUtil.tap);
        } else {
            clickEvent = touch.release;
        }
    } else {
        clickEvent = ".dgrid-row-table:click";
    }
    on(document.getElementById("myDgrid"), clickEvent, function(event) {
        ...
    }
});

我对这个解决方案不太满意。有人知道我首先做错了什么吗?

是一个函数,很可能
on
不会监听它。用
“touchstart”
(链接中的函数)替换它会对您有所帮助吗?在Safari/IPhone上,这很好,所以我认为这不是问题所在。而且,
touchstart
在SurfacePro上不起作用。
require({...}, ["dojo/on", "dojo/has", "dojo/touch", "dgrid/util/touch"], function(on, has, touch, touchUtil){

    if (has("touch")) {
        if (has("safari")) {
            clickEvent = touchUtil.selector(".dgrid-row-table", touchUtil.tap);
        } else {
            clickEvent = touch.release;
        }
    } else {
        clickEvent = ".dgrid-row-table:click";
    }
    on(document.getElementById("myDgrid"), clickEvent, function(event) {
        ...
    }
});