使用原生JS处理事件监听时遇到的很奇怪的问题
问题描述
如图,这个是在调试的时候遇到的,当时用js写对mousemove事件的监听,可是在调试的时候事件的监听出现了问题,我尝试用monitorevent观察过,发现鼠标移动时根本就没有mousemove事件出现,而且鼠标也变成了图中所示,这个符号代表的是什么意思呢?图是从微软家edge上截的,我也在chorme浏览器上试过,chorme也会出现这个问题,不过火狐没有这个问题
问题出现的环境背景及自己尝试过哪些方法
我当时在写一个自定义滚动条的小项目,需要监听mousedown,mousemove,mouseup事件来追踪鼠标的移动,但是目前遇到这个很奇怪的问题,一直无法解决。
目前网上的资料比较少,所以希望有过此类问题经历的大神现身回答一下。
个人怀疑是浏览器的问题,因为火狐上面跑是完全没问题的
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
我把一些细节的代码省略了,事件监听的大概代码就在下面
let _this = this
let ff = function(pos){
...
}
let mouseMove = function(event){
...
ff(_this.isHorizontal ? event.clientX : event.clientY)
}
let mouseUp = function(){
...
_this.container.removeEventListener("mousemove", mouseMove)
_this.container.removeEventListener("mouseup", mouseUp)
}
let f = function(event){
...
_this.container.addEventListener("mousemove", mouseMove)
_this.container.addEventListener("mouseup", mouseUp)
}
for (let i = 0; i < 2; i++) {
if(_this.bars[i]){
_this.bars[i].addEventListener('mouseout', (event)=>{
...
_this.bars[i].removeEventListener('mousedown', f)
})
_this.bars[i].addEventListener('mouseover', (event)=>{
...
_this.bars[i].addEventListener('mousedown', f)
})
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
希望哪位前端大神帮我解解惑,那个符号到底代表什么含义,如果可以能否提供下解决方案,多谢了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我也遇到了这个问题,监听onmove事件出现的,移动的时候,只要那个标志出现,意味着不监听move事件了。请问大神,这个怎么解决?我更改了dom结构后依然有这个问题
找到BUG所在了,这个真的是浏览器的原因。我写了一个示例代码:
把深蓝色框框当成滚动条,mousedown后拖动(mousemove),然后在别的色块释放(mouseup),再重复上面的操作(可以多试几次),然后你的鼠标就变了,mousemove事件也不会再出现。如果尝试更改下html结构会发现bug就消失了,比如把
<div id="content"></div>删掉。