" JSSOR触摸和滑动"在Windows 8中无法正常工作

时间:2015-05-07 13:30:34

标签: internet-explorer jssor

我正在使用jssor滑块库,它在所有设备(触摸和非触摸)中都能很好地工作,但是在使用windows8.1触摸屏信息亭机器(IE11)时会失败。即使他们在http://www.jssor.com/中提供的演示链接也没有联系。但是在同一台设备中,如果我使用鼠标和拖动,一切正常。

尝试通过修改插件捕获触摸事件 - 仍然没有运气。任何指示/建议?

2 个答案:

答案 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

花时间确定这一点,但这解决了这个问题。