我正在构建一个带鼠标和触摸支持的简单网页游戏 . 基于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行为?