diff --git a/src/controllers/handler.js b/src/controllers/handler.js index 2b5378a..a0d131b 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -63,7 +63,9 @@ export default function luckysheetHandler() { if(browser.mobilecheck()){ mobileinit(); } - + + const os = browser.detectOS(), isMac = os=="Mac"?true:false, scrollNum = isMac?1:3; + //滚动监听 $("#luckysheet-cell-main").scroll(function () { @@ -100,41 +102,18 @@ export default function luckysheetHandler() { let rowscroll = 0; //一次滚动三行或三列 - if(event.deltaX != 0){ - let col_ed; - - if(event.deltaX < 0){ - col_ed = col_st + 3; - - if(col_ed >= visibledatacolumn_c.length){ - col_ed = visibledatacolumn_c.length - 1; - } - } - else{ - col_ed = col_st - 3; - - if(col_ed < 0){ - col_ed = 0; - } - } - - colscroll = col_ed == 0 ? 0 : visibledatacolumn_c[col_ed - 1]; - - $("#luckysheet-scrollbar-x").scrollLeft(colscroll); - } - if(event.deltaY != 0){ let row_ed; if(event.deltaY < 0){ - row_ed = row_st + 3; + row_ed = row_st + scrollNum; if(row_ed >= visibledatarow_c.length){ row_ed = visibledatarow_c.length - 1; } } else{ - row_ed = row_st - 3; + row_ed = row_st - scrollNum; if(row_ed < 0){ row_ed = 0; @@ -145,6 +124,28 @@ export default function luckysheetHandler() { $("#luckysheet-scrollbar-y").scrollTop(rowscroll); } + else if(event.deltaX != 0){ + let col_ed; + + if((isMac && event.deltaX >0 ) || (!isMac && event.deltaX < 0)){ + col_ed = col_st + scrollNum; + + if(col_ed >= visibledatacolumn_c.length){ + col_ed = visibledatacolumn_c.length - 1; + } + } + else{ + col_ed = col_st - scrollNum; + + if(col_ed < 0){ + col_ed = 0; + } + } + + colscroll = col_ed == 0 ? 0 : visibledatacolumn_c[col_ed - 1]; + + $("#luckysheet-scrollbar-x").scrollLeft(colscroll); + } }); $("#luckysheet-scrollbar-x").scroll(function(){ diff --git a/src/global/browser.js b/src/global/browser.js index 052edd2..290c100 100644 --- a/src/global/browser.js +++ b/src/global/browser.js @@ -125,6 +125,29 @@ const browser = { } return _this.luckysheetrefreshfixednum; + }, + detectOS() { + var userAgent = navigator.userAgent; + var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows"); + var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel"); + if (isMac) return "Mac"; + var isUnix = (navigator.platform == "X11") && !isWin && !isMac; + if (isUnix) return "Unix"; + var isLinux = (String(navigator.platform).indexOf("Linux") > -1); + if (isLinux) return "Linux"; + if (isWin) { + var isWin2K = userAgent.indexOf("Windows NT 5.0") > -1 || userAgent.indexOf("Windows 2000") > -1; + if (isWin2K) return "Win2000"; + var isWinXP = userAgent.indexOf("Windows NT 5.1") > -1 || userAgent.indexOf("Windows XP") > -1; + if (isWinXP) return "WinXP"; + var isWin2003 = userAgent.indexOf("Windows NT 5.2") > -1 || userAgent.indexOf("Windows 2003") > -1; + if (isWin2003) return "Win2003"; + var isWinVista= userAgent.indexOf("Windows NT 6.0") > -1 || userAgent.indexOf("Windows Vista") > -1; + if (isWinVista) return "WinVista"; + var isWin7 = userAgent.indexOf("Windows NT 6.1") > -1 || userAgent.indexOf("Windows 7") > -1; + if (isWin7) return "Win7"; + } + return "other"; } };