vue中@contextmenu在pc和mac中的区别

项目中有用到右键菜单,故用了@contextmenu,由于本人是用的PC电脑,所以一切正常,

但是有同事用mac测试了一下,问题随之而来,MAC上右键按下就触发了,

PC上面是鼠标抬起才会触发,所以这样就导致了问题的出现,因为我在方法里面再给document上注册了一个鼠标抬起隐藏右键菜单。

所以在PC上一切正常,但是MAC上面右键菜单只要抬起鼠标就隐藏了。

问题找到了

那么怎么解决呢?

目前也没有很好的思路

就先判断是否是MAC电脑,如果是,就把mouseup事件换成click,click的体验没有mouseup好,反正mac是小众用户群体,先不影响使用吧。

1  if (detectOS() == "Mac") {
2         $(document).click(function(e) {
3                destroyedMenuRightClick();
4           });
5       } else {
6           $(document).mouseup(function(e) {
7                destroyedMenuRightClick();
8           });
9       }
 1 function detectOS() {
 2       var sUserAgent = navigator.userAgent;
 3       var isWin =
 4         navigator.platform == "Win32" || navigator.platform == "Windows";
 5       var isMac =
 6         navigator.platform == "Mac68K" ||
 7         navigator.platform == "MacPPC" ||
 8         navigator.platform == "Macintosh" ||
 9         navigator.platform == "MacIntel";
10       if (isMac) return "Mac";
11       var isUnix = navigator.platform == "X11" && !isWin && !isMac;
12       if (isUnix) return "Unix";
13       var isLinux = String(navigator.platform).indexOf("Linux") > -1;
14       var bIsAndroid = sUserAgent.toLowerCase().match(/android/i) == "android";
15       if (isLinux) {
16         if (bIsAndroid) return "Android";
17         else return "Linux";
18       }
19       if (isWin) {
20         var isWin2K =
21           sUserAgent.indexOf("Windows NT 5.0") > -1 ||
22           sUserAgent.indexOf("Windows 2000") > -1;
23         if (isWin2K) return "Win2000";
24         var isWinXP =
25           sUserAgent.indexOf("Windows NT 5.1") > -1 ||
26           sUserAgent.indexOf("Windows XP") > -1;
27         if (isWinXP) return "WinXP";
28         var isWin2003 =
29           sUserAgent.indexOf("Windows NT 5.2") > -1 ||
30           sUserAgent.indexOf("Windows 2003") > -1;
31         if (isWin2003) return "Win2003";
32         var isWinVista =
33           sUserAgent.indexOf("Windows NT 6.0") > -1 ||
34           sUserAgent.indexOf("Windows Vista") > -1;
35         if (isWinVista) return "WinVista";
36         var isWin7 =
37           sUserAgent.indexOf("Windows NT 6.1") > -1 ||
38           sUserAgent.indexOf("Windows 7") > -1;
39         if (isWin7) return "Win7";
40       }
41       return "other";
42     }

猜你喜欢

转载自www.cnblogs.com/threepigs/p/10621879.html