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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM