鼠标移动事件与窗口8.1pc的IE11中的触摸事件冲突

时间:2014-07-03 14:12:51

标签: javascript touch internet-explorer-11 mousemove mousedown

我为窗口8.1平板电脑和窗口8.1 pc的IE11创建了一个网页。在此页面中,可以通过javascript处理滚动。

表示html,

<div style="overflow:hidden; -webkit-overflow-scrolling:touch; -ms-touch-action: none; touch-action: none; height: 100px" id="scrolledDiv">
   <table id="ContentTable" cellpadding="0" cellspacing="0">
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
      <tr>
          <td>
            aaa
          </td>
      </tr>
   </table>
<div>

在javascript中,

var startY;
if (window.navigator.msPointerEnabled) {
   document.getElementById('scrolledDiv').addEventListener("MSPointerDown", 
     function(e){
       startY = e.pageY;
       e.preventDefault();
      }, false);

   document.getElementById('scrolledDiv').addEventListener("MSPointerMove", function(e){
        var touches = e.pageY;
        // override the touch event’s normal functionality
        e.preventDefault();

        // y-axis
        var touchMovedY = startY - touches;
        startY = touches; // reset startY for the next call
        document.getElementById('scrolledDiv').scrollTop = document.getElementById('scrolledDiv').scrollTop + touchMovedY;
      }, false);
}

当用户进行触摸事件时,滚动条适用于窗口平板电脑8.1的IE 11。但是当用户在窗口8.1 pc的IE 11中移动鼠标时,它就像触摸事件一样工作。我不想在窗口8.1 pc的IE 11中的鼠标移动事件中获得滚动过程。我怎么能避免这个?谢谢大家。

1 个答案:

答案 0 :(得分:0)

现在,我找到了解决方案。指针事件对象(e)中有pointerType属性。我将以下代码片段包装到我的代码中。

if (e.pointerType == 'touch'){
  // your touch event code
}

指针类型支持触控,鼠标和笔。