iscroll在谷歌cp端下面的差异

本来打算在iscroll中增加swiper实现轮播,但在chrome cp端下却不能滑动(火狐、ie、uc正常)。

后发现iscroll中的元素在chrome cp端不能触发mouseup等鼠标事件,不知道是什么原因。

jsbin效果

// html部分
  <div class="wrap">
    <div class="scroll">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
  </div>

// js部分
const myScroll = new IScroll('.wrap')
const item = document.querySelector('.item')

// 点击第一个元素
item.onclick = e => {
  console.log('item clicked') // 正常输出
}

item.onmouseup = e => {
  console.log('item mouseup') // 在chrome cp端下没有输出
}

希望小伙伴能解惑~谢谢~


目前的思路:

issues

// iscroll.js
{
    disablePointer : !utils.hasPointer, // 判断是否支持PointerEvent
    disableTouch : utils.hasPointer || !utils.hasTouch,
    disableMouse : utils.hasPointer || utils.hasTouch,
}

在谷歌浏览器支持PointerEvent事件,所以使用PointerEvent事件代替mouse事件,而在PointerEvent中应该阻止了了mouse事件的发生。所以可以禁止PointerEvent事件。

{
    disablePointer: true,
    disableMouse: false,
    disableTouch: false,
}

我先这么理解,等以后在深入看看源码吧。如果哪位大哥有好的想法,感激~

阅读 3.4k
2 个回答

document.querySelector():返回文档中匹配指定的选择器组的第一个元素
将mouseup和mousedown事件改为:pointerdown/pointerup
https://stackoverflow.com/que...

刚试了下,用右键点击能触发 onmouseup 事件,感觉像是个bug.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题