我们在项目中使用iScroll,并且其滚动区域中的某些元素附加了mousedown事件。

在最新版的Google Chrome浏览器(55.0.2883.95(64位))上,永远不会触发mousedown事件,原因是IScroll注册了pointerdown事件。

有什么办法解决吗?我当然可以使用pointerdown代替mousedown,但是Safari不支持它,因此我需要对浏览器进行一些脏检查。



(function () {
  var scroll = new IScroll('#scroller');

  document.getElementById('testblock').addEventListener('mousedown', mousedownEventHandler);

  function mousedownEventHandler(event) {
    console.info(event.type, 'triggered.');
  }
})();

body {
  padding: 0;
  margin: 0;
}

#scroller {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

#content {
  height: 5000px;
  background: white;
}

#testblock {
  position: fixed;
  top: 0;
  width: 100px;
  height: 100px;
  line-height: 100px;
  background: silver;
  border: 1px solid black;
  cursor: pointer;
  text-align: center;
}

<script src="https://rawgit.com/cubiq/iscroll/master/build/iscroll-probe.js"></script>
<div id="scroller">
  <div id="content">
    <div id="testblock">Click me</div>
  </div>
</div>

最佳答案

您需要将click参数添加到options对象。

var scroll = new IScroll('#scroller', {
    click: true
});

关于javascript - JavaScript-iScroll-鼠标按下不触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41287947/

10-13 03:11