简体   繁体   English

如何获得在Windows表面运行的便携式铬铬合金中进行触摸的功能?

[英]How to get touch events working in chromium portable running in windows surface?

This is what I am using to trigger the touch events : 这就是我用来触发触摸事件的东西:

var eventMap = {};

(function(){
  var eventReplacement = {
    "mousedown": ["touchstart mousedown", "mousedown" , "pointerdown"],
    "mouseup": ["touchend mouseup", "mouseup", "pointerup"],
    "click": ["touchstart click", "click"],
    "mousemove": ["touchmove mousemove", "mousemove", "pointermove"]
 };

for (i in eventReplacement) {
    if (typeof window["on" + eventReplacement[i][0]] == "object") {
        eventMap[i] = eventReplacement[i][0];
    } 
    else {
        eventMap[i] = eventReplacement[i][1];
        };
  };
})();

Then I use it as following: 然后我按如下方式使用它:

$(genderSlider.pointer).on(eventMap.mousedown, setOffset);
$(genderSlider.pointer).on(eventMap.mousemove, fnMoveSlider);
$(genderSlider.pointer).on(eventMap.mouseup, function(event){event.preventDefault(); $(event.target).css("-webkit-opacity", "0.5");usingSlider = false});

Then the callback methods look somewhat like this : 然后,回调方法看起来像这样:

function setOffset(event){ 

alert(event.type);
event.preventDefault();
alert(event.type);
var touch = '';
if (event.type == 'mousedown'){
    usingSlider = true;
    touch = event;
} else {
    usingSlider = true;
    alert(event.type);
    touch = event.originalEvent.touches[0];
}

var ypos = touch.pageY; // Get Y Coordinate
$(event.target).css("-webkit-opacity", "1.0");
offset = parseFloat(ypos) - parseFloat(this.style.top); 

refObj = {};

if(this.id === $(genderSlider.pointer).attr("id")){
        refObj = genderSlider;
   }
}

Things are working fine for mouse events. 鼠标事件一切正常。 But for touch events the alert shows as mousevents. 但是对于触摸事件,警报显示为“鼠标开”。 Tried touch-action: none as well. 尝试touch-action: none But does not work 但是不起作用

Can anybody suggest what should I try? 有人可以建议我尝试什么吗?

I finally made it work. 我终于做到了。 May be useful for the future readers. 可能对将来的读者有用。

The solution was actually way easier than I actually perceived it to be. 该解决方案实际上比我实际想象的要容易得多。 Does not make much sense though, but it actually works. 虽然没有多大意义,但实际上可以。

The solution was the following: 解决方案如下:

Wrote the method for two types of events separately, so it looked like: 分别为两种类型的事件编写了该方法,因此它看起来像:

$(genderSlider.pointer).on("mousedown", setOffset);
$(genderSlider.pointer).on("mousemove", fnMoveSlider);
$(genderSlider.pointer).on("mouseup", function(event)    {event.preventDefault(); $(event.target).css("-webkit-opacity", "0.5");usingSlider = false});

And again for touch : 再次触摸:

$(genderSlider.pointer).on("touchstart", setOffsetForTouch);
$(genderSlider.pointer).on("touchmove", fnMoveSliderForTouch);
$(genderSlider.pointer).on("touchend", function(event)    {event.preventDefault(); $(event.target).css("-webkit-opacity", "0.5");usingSlider = false});

Then wrote the callback events separately to handle the cases differently. 然后分别编写回调事件以不同方式处理这些情况。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM