我正在构建一个带鼠标和触摸支持的简单网页游戏 . 基于JavaScript mapping touch events to mouse events的接受答案,我复制粘贴了他们的代码(进行了一些修改) .
我将用户进行的第一次触摸映射到左键单击事件,然后将第二次触摸(第一次触摸按下)映射到右键单击事件 . 像这样:
function touchHandler(event){
var touches = event.changedTouches;
var first = touches[0];
var type = "";
switch(event.type){
case "touchstart" : type = "mousedown"; break;
case "touchmove" : type = "mousemove"; break;
case "touchend" : type = "mouseup"; break;
default:return;
}
var button = 0;
if(first.identifier >= 1)
button = 2;
document.getElementById("foo").innerHTML = first.identifier; //my "debug statement"
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type,true,true,window,1,
first.screenX,first.screenY,
first.clientX,first.clientY,false,
false,false,false,button,null);
first.target.dispatchEvent(simulatedEvent);
event.preventDefault(); }
这是问题:我的"debug statement"(参见代码)显示标识符在chrome中的模拟器模式以及我的Android手机和MS Surface上都是正确的 . 但在我的iPad上? 1862464270 ,并计数 . 显然,我没有那么多手指 .
运行Chrome或Safari时会出现此问题,但只能在我的iPad上运行 . 在我用于测试的其他系统上,一切正常 .
有没有人知道可能导致这个问题的原因?有没有其他人遇到奇怪的event.identifier行为?