我正在使用Seadragon Ajax和jQuery touch事件监听器.
容器有touchstart,touchmove和touchend绑定它,继续触摸开始:
.bind('touchstart MSPointerDown',function(e){ var p = coord(e.originalEvent); p.start = true; p.scale = 1; if(e.originalEvent.pointerType === 4) return; else if(e.originalEvent.pointerType !== undefined) e.originalEvent.preventMouseEvent(); $(this).data(p); e.preventDefault(); e.stopPropagation(); })
在seadragon视图内部生成了一些按钮.由于其容器div上的touchstart,这些按钮不会在平板电脑上触发.用鼠标工作正常.
new Seadragon.Button("Click to go","",null,moveFunction,null );
解决方法
通过添加if语句来检查触摸次数,如下所示:
.bind('touchstart MSPointerDown',function(e){ if (event.touches.length != 1) { e.preventDefault(); e.stopPropagation(); } var p = coord(e.originalEvent); p.start = true; p.scale = 1; if(e.originalEvent.pointerType === 4) return; else if(e.originalEvent.pointerType !== undefined) e.originalEvent.preventMouseEvent(); $(this).data(p); })