我正在使用jssor滑块库,它在所有设备(触摸和非触摸)中都能很好地工作,但是在使用windows8.1触摸屏信息亭机器(IE11)时会失败。即使他们在http://www.jssor.com/中提供的演示链接也没有联系。但是在同一台设备中,如果我使用鼠标和拖动,一切正常。
尝试通过修改插件捕获触摸事件 - 仍然没有运气。任何指示/建议?
答案 0 :(得分:1)
支持触摸事件需要在windows8.1触摸屏信息亭中监听指针和MSPointer事件。
/ *在$ AddEvent函数中我添加了下面的代码片段来实现windows 8中的触摸支持* /
/*In $AddEvent function i added below code snippet to achieve touch support in windows 8 */
var pointerEnabled = navigator.pointerEnabled || navigator.msPointerEnabled;
var pointerEvents = [
'pointerdown MSPointerDown',
'pointermove MSPointerMove',
'pointerup pointercancel MSPointerUp MSPointerCancel'
];
if (elmt.addEventListener) {
if (eventName == "mousewheel") {
elmt.addEventListener("DOMMouseScroll", handler, useCapture);
}
// we are still going to add the mousewheel -- not a mistake!
// _This is for opera, since it uses onmousewheel but needs addEventListener.
elmt.addEventListener(eventName, handler, useCapture);
if(pointerEnabled)
{
$("body").css("-ms-touch-action", "none");
var msEventName = eventName.toLowerCase();
if(msEventName.indexOf("mouse") != -1 )
{
if(msEventName.indexOf("up") != -1 ) {
elmt.addEventListener(pointerEvents[2], handler, useCapture);
}
else if(msEventName.indexOf("move") != -1 ){
elmt.addEventListener(pointerEvents[1], handler, useCapture);
}
else{
elmt.addEventListener(pointerEvents[0], handler, useCapture);
}
}
else if(msEventName.indexOf("touch") != -1 ) {
if(msEventName.indexOf("start") != -1 ){
elmt.addEventListener(pointerEvents[2], handler, useCapture);
}
else if(msEventName.indexOf("move") != -1 ){
elmt.addEventListener(pointerEvents[1], handler, useCapture);
}
else{
elmt.addEventListener(pointerEvents[0], handler, useCapture);
}
}
}
}
答案 1 :(得分:0)
找到解决方案 -
错过了设置css属性
-ms-touch-action:none
花时间确定这一点,但这解决了这个问题。