項目中有用到右鍵菜單,故用了@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 }