فهرست منبع

处理右键菜单,处理有些电脑出现主菜单与子菜单距离过远的问题(很难重现,只有李婷那出现)

zeweizhong 6 سال پیش
والد
کامیت
2fd0892841
2فایلهای تغییر یافته به همراه16 افزوده شده و 1 حذف شده
  1. 16 0
      lib/jquery-contextmenu/jquery.contextMenu.js
  2. 0 1
      modules/main/routes/main_route.js

+ 16 - 0
lib/jquery-contextmenu/jquery.contextMenu.js

@@ -199,6 +199,21 @@
 
                 opt.$menu.css(offset);
             },
+            // 有的电脑会出现主菜单和子菜单距离比较远的情况,这里检查一下。
+            checkSubmenuPosition: function ($menu) {
+                if (!$menu) {
+                    return;
+                }
+                const offsetWidth = $menu.offsetWidth;
+                const curLeft = parseFloat(window.getComputedStyle($menu).left);
+                const maxDiff = 8;
+                const minDiff = 4;
+                const diff = offsetWidth - curLeft;
+                if (diff > maxDiff || diff < minDiff) {
+                    const fixedLeft = offsetWidth - 5;
+                    $menu.style.left = `${fixedLeft}px`;
+                }
+            },
             // position the sub-menu
             positionSubmenu: function ($menu) {
                 if (typeof $menu === 'undefined') {
@@ -224,6 +239,7 @@
                     };
                     $menu.css(offset);
                 }
+                defaults.checkSubmenuPosition($menu[0]);
             },
             // offset to add to zIndex
             zIndex: 1,

+ 0 - 1
modules/main/routes/main_route.js

@@ -35,7 +35,6 @@ module.exports =function (app) {
                 if(options){
                     options = await optionsDao.saveOptions(req.session.sessionUser.id, req.session.sessionCompilation._id, optionSetting);
                 }
-
                 res.render('building_saas/main/html/main.html',
                     {
                         userAccount: req.session.userAccount,