Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

contextmenu事件在Linux中的问题

  最近经常有人说我网站的手势功能在Linux下有问题,右键点下后无法释放。一直以为Web程序不会因为系统而出是状况,这回见识到了。在Linux中,鼠标右键是按下时触发contextmenu事件,而Windows中是松开时才触发。就是这小小的差异导致了手势功能的问题。
  写一个测试程序来同时捕获mouseup、mousedown、contextmenu,这三个事件。 onmousedown=function(){
  console.log("down");
};
onmouseup=function(){
  console.log("up");
};
oncontextmenu=function(){
  console.log("menu");
  //Chrome for Linux 需要阻止菜单弹出才能捕获mouseup事件
  return false;
};
  在Windows上是这样的结果

  而在Linux上则是

  而且Chrome for Linux还会在菜单弹出后无法捕获鼠标事件,需要阻止菜单弹出才能捕获到mouseup。总之Linux下的行为就是蛋疼,点下右键还没松开就立即弹出菜单,用户体验太差了。我们说“点击”鼠标右键,你只是“点”还没“击”呢就给弹出了,当然让人蛋疼。
  这个问题导致了之前的鼠标手势处理在Linux上无法兼容(不是我不兼容,是无法兼容,那货不支持!)。程序中是在右键按下和松开的过程中计算轨迹,计算是否要为用户弹出菜单。如果一点下就弹出菜单的话完全没时间来让用户操作。当然我可以完全屏蔽右键菜单来实现,但是这样强硬的实现必定会招来大量口水。
  我一直是Windows(只是Windows不是整个微软)的脑残粉(在Win8以前),不喜欢任何Windows之外的操作系统,很大一部分原因就是因为Windows在用户体验的细节方面做的很好。也许是个人习惯吧,我就是喜欢Windows,你们骂我我也不会改变观点的。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^