如题,就以chrome为代表举例说明遇到mousemove的问题。

为body分别绑定onmousedown、onmousemove、onmouseup,并为触发时打印至控制台。代码如下(同学不要忘记body要全屏,并在body上执行操作):

 var body = document.body;

 body.onmousedown = function() {
console.log('down');
} body.onmousemove = function(e) {
console.log('move');
} body.onmouseup = function() {
console.log('up');
}

先将鼠标移至body区内,刷页面,单击一次body,会发现依次打印了down、up、move,由此可断定是于up后执行的move。我们知道一般我们执行一次点击过程的顺序为:onmousedown、onmousemove、onmouseup、click,而在chrome中却在onmouseup后执行了一次onmousemove,此bug说不清是否有意而为之,但对于开发来说是没有必要的,因此我们就要避免此问题的出现,以免莫名多执行了一次onmousemove。

解决方法不高级,也就是判断是否真的移动了,从而判断是否执行onmousemove触发的函数。

 var body = document.body,
obj = {}; body.onmousedown = function(e) {
console.log('down');
} body.onmousemove = function(e) {
if (e.pageX === obj.x && e.pageY === obj.y) {
return false;
}
console.log('move');
} // 前面说过是在onmouseup后执行onmousemove,因此在这更改x,y更合理
body.onmouseup = function(e) {
obj.x = e.pageX;
obj.y = e.pageY;
console.log('up');
}

会发现,onmousemove恢复正常。单击依次打印:down、up。

问题就此解决。

最新文章

  1. Oracle笔记3-高级查询
  2. < java.lang >-- StringBuilder字符串缓冲区
  3. DataTable添加列和行的三种方法
  4. linux下shell编程示例-获取进程id
  5. fseek()
  6. Difference Between Primes
  7. IIS7授权错误:“无法验证对路径的访问”的解决方法
  8. 网络爬虫技术Jsoup——爬到一切你想要的(转)
  9. Arrays.asList 为什么不能 add 或者 remove 而 ArrayList 可以
  10. MAVEN简介之——pom.xml
  11. CSS层叠样式表(Cascading Style sheets)
  12. 763. Partition Labels
  13. WebStorm如何分配运行内存?The IDE is running low on memory...
  14. 转载 AutoFac常见用法总结
  15. <A>标签电子邮件链接
  16. Tocmat 启动错误 Port 8005 required by tomcat v7.0 server at localhost is already in use
  17. javaRPC原理
  18. 训练超参数, 出现 Cannot use GPU in CPU-only Caffe 错误?
  19. mysqldump 和 sql命令导入sql文件
  20. Delphi APP 開發入門(八)SQLite資料庫

热门文章

  1. 【iOS】Swift扩展extension和协议protocol
  2. ADT后windows菜单未找到Android SDK Manager和Android Virtual Device Manager该解决方案的选择
  3. windows 10 install oracle 12c error:[ INS-30131 ]
  4. Eclipse—怎样为Eclipse开发工具中创建的JavaWebproject创建Servlet
  5. 2g-3g
  6. webserver实现
  7. JSCover+WebDriver/Selenium获得JS 代码覆盖
  8. 编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法
  9. springMVC框架建设进程
  10. ABP应用层——权限验证