阅读:5141回复:29
一个暗黑透明类的菜单样式在proton启用后失效了,能修复吗?
先上图。
一直觉得这个样式非常漂亮,奈何firefox91版本强制启用proton,参数已经无法关闭proton了。而且,启用proton已经是大势所趋了。所以想知道有没有什么办法可以继续使用这个样式,还需要怎么调整吗? #ContentSelectDropdown > menupopup > menuitem[customoptionstyling="true"]{background-color:transparent !important;color:#999999 !important;} menupopup > menuitem, menupopup > menu { padding-block: 0.1em !important; padding-inline-start: 0em !important; } /*menuitem,menu{max-height:26px !important;min-height:26px !important;}*/ #PlacesToolbarItems > .bookmark-item {font-size:13px !important;} menu,menuitem,.splitmenu-menuitem { font-size:16px!important; text-align: left !important; font-family:"Microsoft YaHei UI" !important; } /* SUBMENUS */ popup:not(#autoscroller), menupopup, popup menu, menupopup menu { opacity: 0.95 !important; -moz-appearance: none !important; background: none !important; border: none !important; color: #fff !important; box-shadow: none !important; } menupopup{ padding: 11px 12px 16px !important; } /*.popup-internal-box { margin: 11px 12px 16px !important; }*/ .addon-control.state menupopup {padding:8px 13px 12px 4px !important; } /* MENU ITEMS */ menuitem, .splitmenu-menuitem { opacity: 0.95 !important; -moz-appearance: none !important; border: none !important; color: #fff !important; } /* APP MENU */ #appmenu-popup vbox { background: none !important; border: none !important; box-shadow: none !important; } /* MENUS */ popup:not(#autoscroller), menupopup { border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAvCAYAAABAHIylAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUlSURBVHja7JtPaBRXHMc/781OdnXNqinVlphK4iJoQWiLGIjgLV6UEBFLEcFzLr0JihdB8OjNkwdBWCkKIejFXIKYQkR6CS2Gsv5rjE0sSN11kzWz814P+ya+vMxGL4Xdzfzgx7x9O4edD9/fmzfz+67QWrNeCCGEO9Vg3MyhG4zRnwAg4r53oAgniRm3AhwdM7bnYmGtAWTBiSBI6yiduWaH5AJR1lE5czoO0ipAFhwbhGeltI4upGZWkA0ltI6h9Tk6ZxWkFUAOnChTVmaAHcBWIAukY8qtWeEAfAAqwDvgDVAFalYqK1cgCa11HBzPQPGBDuBrz/P6BgcH1aFDh6pHjx4t9/f3V2mhmJqayty/f7/z0aNHmfHxcRmG4TPgb2AZCAyk0IVkAxKOajqMSvbm8/kdV65c+efkyZNl2iDu3LnTef78+S+LxeIb4E+jrmVHTdoFFCknUk0G6NmzZ09vsVgsAoyMjBwYHx8fLpVKfUEQdLUSFN/33+ZyuWeDg4Oj165dmwbI5/P5p0+fPgdmTclFagoBpbXW9u3bs5STAbZ6nvdDoVCYP3XqVOnw4cM/Pnny5KdUKrUspQyFELqVAGmthVLKq9VqHfv27bs1OTn5S6FQyJ0+ffor4DezNlUtJYWA9pxbuG/KKgPsPnHiRPrSpUsLIyMjByYmJn5Op9NLUkq1du/Y/CGEQEqpPM+rzc/Pf//69evfz507Nzs9Pb1lZmYmBZSchVoDWlp3IumoqGtgYKAMcO/evTO+739oNdU0AKV93/8wNjZ2BmBgYKACbDfXnLK2MQJnL+MC6jx+/HgJoFKp9EgpQ9okpJRhuVzeDTA0NPQOyK0HCKfMIkjpfD4fACilsu2gHltFSqmsWaiDGDgrwpHOM5cNyGPjRCpOPa6ChLOL3kiAPOfahbsGxUESGwiQaPB8KaTzNB73amOjAIp7pYNc50XYRgS0hoUkifW3BAmCBFACKAGUAEoAJYASQAmgJBJACaD/F5DrgNAbiIOmgQNEOhO24yGcmZnpAJBSVkyLqG2e3oUQSwAvXrzwWW1gsFkgiXdAKKA6Nja2DSCbzc4qpdrmDWMYhl4ul3sOUCgUvgAWcdo9ERPZAI4C3k9OTnYBHDt27GYQBOl2UJHWWgRBkB4aGroJ8PDhw+3UTQ0qDpLdOIwsLpFpQRSLxXxvb++7CxcuvLx7965eWFj4TgihTbYcGKVUKgiCzP79+2/dvn174vr1611Xr17tA54B71nbWVVuTz4DbAY6qdtcdu/atWvn7Ozsr7CqN58PgmBbKwHyff/fXC5XtHvzPT09A69evVoAXlJvPZdNuVUxjg+3L58GNlH3/+RM7u3u7s5evnz5j7Nnz75thzXoxo0bXRcvXvx2bm6uQt3dUTJZAZaouz1qQOh2VSPjwiZgi1FSJ9Atpfymv79/4eDBg2+Hh4ffHDlyZLGVoDx48GDz6OjojsePH3dNTU3tVEr9BcwZ1ZRNiS1ZZbZSYo3cHZsNpKzJLdQdZjnzXQfN7VN0787LpnxK1B1m741iKma8GLMG6ZTWOlpwI99ezZwkrW2AMvNVPrZpU6ztqzUroOj3R9dWNWpZdFRju8z05zrMMlZ2NADU7B5FF1AEKcrPcphBY49ilL5J2/XaKgqKHK2ByWUr1/coRntvB5LrcvX52OC3e9nQ/D5p5UCqWVA+7XI1+wRqtVrik6aBT9r3fQAbUuK0jwPkQLJBbez/atiA7HBguUDa/t8+/w0Aop+YsD/C4DEAAAAASUVORK5CYII=") !important; border-image-slice: 15 fill !important; border-image-width: 15px !important; border-image-repeat: repeat !important; } menupopup menupopup { margin-top: -13px !important; } /* SEPARATOR */ menuseparator { -moz-appearance: none !important; list-style-image: none !important; background: none !important; border:solid 0.5px #555 !important; padding-top: 0px !important; padding-bottom: 0px !important; margin-top: 2px !important; margin-bottom: 2px !important; } /* DISABLED ITEM */ menuitem[disabled="true"] { background: none !important; opacity: 0.25 !important; } /* SELECTED ITEM */ popup menu:not([disabled="true"])[_moz-menuactive="true"], menupopup menu:not([disabled="true"])[_moz-menuactive="true"], menuitem:not([disabled="true"])[_moz-menuactive="true"], .splitmenu-menuitem:not([disabled="true"])[_moz-menuactive="true"] { background: -moz-linear-gradient(top, #6f81f5, #3f51f2) repeat-x !important; border-radius: 2px !important; } /* SELECTED ITEM (GRAPHITE) */ popup menu:-moz-system-metric(mac-graphite-theme)[_moz-menuactive="true"], menupopup menu:-moz-system-metric(mac-graphite-theme)[_moz-menuactive="true"], menuitem:not([disabled="true"]):-moz-system-metric(mac-graphite-theme)[_moz-menuactive="true"] { background: -moz-linear-gradient(top, #7f858d, #69717c) repeat-x !important; } /* RIGHT ARROW */ .menu-right { -moz-appearance: none !important; opacity: 0.4 !important; list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAJCAYAAADHP4f4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADrSURBVHjatJM9TgMxEEafU6WgSEmRAokG5QQoB8ghKDkEJ9lLpKDMGRAV1UopU6AVBV3QxhWPAls4JoYqlj7J8/fNeGaM2qsLlXNhAlwDz0DH/2cLzCrdAMQ/0KPGAjt12ahonXyeKv1KHSuejL264IRhTIQl0bIgOqj32QagbhpJOoCgxkZrdsBNcb8sbB/AHIghBNQp8ApcFD5vIYQrgMkJcoEX4DbJXZWARPaYhRBCBB5SLMAncPfDePy897IVaev2jVaM6uqouu95RXVNZcgBG3VazaJvJMgYKq6Zuv3dGx3Shpztn3wNABJf62ogSXVRAAAAAElFTkSuQmCC") !important; -moz-image-region: rect(0px 7px 9px 0px) !important; margin-top: 1px !important; } .menu-right[_moz-menuactive="true"] { opacity: 1.0 !important; } /* SCROLL ARROWS */ .autorepeatbutton-up{list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAJCAYAAADHP4f4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADrSURBVHjatJM9TgMxEEafU6WgSEmRAokG5QQoB8ghKDkEJ9lLpKDMGRAV1UopU6AVBV3QxhWPAls4JoYqlj7J8/fNeGaM2qsLlXNhAlwDz0DH/2cLzCrdAMQ/0KPGAjt12ahonXyeKv1KHSuejL264IRhTIQl0bIgOqj32QagbhpJOoCgxkZrdsBNcb8sbB/AHIghBNQp8ApcFD5vIYQrgMkJcoEX4DbJXZWARPaYhRBCBB5SLMAncPfDePy897IVaev2jVaM6uqouu95RXVNZcgBG3VazaJvJMgYKq6Zuv3dGx3Shpztn3wNABJf62ogSXVRAAAAAElFTkSuQmCC") !important;-moz-image-region: rect(0px 16px 9px 7px) !important;} .autorepeatbutton-down{list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAJCAYAAADHP4f4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADrSURBVHjatJM9TgMxEEafU6WgSEmRAokG5QQoB8ghKDkEJ9lLpKDMGRAV1UopU6AVBV3QxhWPAls4JoYqlj7J8/fNeGaM2qsLlXNhAlwDz0DH/2cLzCrdAMQ/0KPGAjt12ahonXyeKv1KHSuejL264IRhTIQl0bIgOqj32QagbhpJOoCgxkZrdsBNcb8sbB/AHIghBNQp8ApcFD5vIYQrgMkJcoEX4DbJXZWARPaYhRBCBB5SLMAncPfDePy897IVaev2jVaM6uqouu95RXVNZcgBG3VazaJvJMgYKq6Zuv3dGx3Shpztn3wNABJf62ogSXVRAAAAAElFTkSuQmCC") !important;-moz-image-region: rect(0px 25px 9px 16px) !important;} .autorepeatbutton-up, .autorepeatbutton-down { position: relative !important; z-index: 1 !important; opacity: 0.8 !important; background: #333 !important; } .autorepeatbutton-up[disabled="true"], .autorepeatbutton-down[disabled="true"] { opacity: 0.2 !important; } /* CHECKMARK */ menuitem[checked="true"] .menu-iconic-left { -moz-appearance: none !important; opacity: 0.5 !important; height: 16px !important; list-style-image: none !important; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVQoFWP8z4AfMOGXZmAgW4EuQxHU7P8MWGDm/59ACJbBJl39HwRacCkIB0s3wsyFmaD4vxQsJP3/LVDBNJg0MBCgzI1AYZCuXUD6/H82TAW9QImf/4uA5P//NghphAmc/2+AJf//X4EsjVDA8N8MrODPf3VcChj+rwMqWY0qjWwCw39joAJLdAWMQDV4AcHIAgCeN8L5Yy1dlAAAAABJRU5ErkJggg==") 2px 0px no-repeat !important; margin-left:3px !important; } menuitem[checked="true"][_moz-menuactive="true"] .menu-iconic-left { opacity: 1.0 !important; } |
|
最新喜欢:aunsen |
1楼#
发布于:2021-08-12 20:41
|
|
2楼#
发布于:2021-08-12 20:53
另外再请教个问题,就是在没有启用其他任何样式的情况下,我想通过以下样式来改变菜单的背景颜色,却发现无论如何都生效不了,我的主题依旧是明亮主题。
:host, :root { --menu-background-color: #f9f9fb !important; --menu-color: #fff !important; } |
|
3楼#
发布于:2021-08-12 23:59
lonely_8:原楼层已经更新。非常感谢你的解答。 后来发现还是有点瑕疵,左对齐还是太难了。效果是这样的: 得益于你的指导,并且借鉴了https://github.com/black7375/Firefox-UI-Fix/releases的内容,我直接抛弃掉本主题所述的样式。而是改用官方的暗黑色调,并且在官方的基础进行修改,这样的话就能够实现近乎完美的效果。先上效果图: 代码是这样的:如果想要白色边框更粗点,可以将10行-13行的注释去掉。 menuseparator { -moz-appearance: none !important; list-style-image: none !important; background: none !important; border:solid 0.5px #555 !important; padding-top: 0px !important; padding-bottom: 0px !important; } /*.menupopup-arrowscrollbox{ border: 2px solid #fff !important; }*/ menupopup { --menuitem-hover-background-color: rgba(90, 108, 234, 0.95) !important; --menu-background-color: rgba(56, 56, 56, 0.95) !important; --menu-color: #fff !important; --menu-disabled-color: rgba(251, 251, 254, 0.4) !important; --menu-border-color: rgba(255, 255, 255, 1) !important; --menu-icon-opacity: 1.0 !important; border: 1px solid rgba(56, 56, 56, 1) !important; } .menu-right { margin-inline-end: 0.4em !important; } menu,menuitem { font-size:16px!important; font-family:"Microsoft YaHei UI" !important; } :root { --menu-padding: 0.2em; } menupopup > menuitem, menupopup > menu { padding-block: var(--menu-padding) !important; } /* Padding */ :root { --context-menu-background-padding-default: 5px; --context-menu-background-padding: var(--context-menu-background-padding-default); } :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem, :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu, #blockedPopupDontShowMessage { background-position: left var(--context-menu-background-padding) center !important; padding-inline-start: var(--context-menu-background-padding) !important; } /* Padding - Windows */ @media (-moz-os-version: windows-win7 ), (-moz-os-version: windows-win8 ), (-moz-os-version: windows-win10) { :root { --context-menu-background-padding: 0.5em; --context-menu-text-padding: calc(var(--menu-padding) + var(--context-menu-background-padding-default) + 16px); } :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist), :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist), #blockedPopupDontShowMessage { padding-inline-start: calc(var(--context-menu-background-padding) + var(--context-menu-text-padding)) !important; } /* Checkbox */ :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem[type="checkbox"][checked="false"] > .menu-iconic-left { padding-inline-start: var(--context-menu-text-padding); } } |
|
4楼#
发布于:2021-08-14 14:30
|
|
5楼#
发布于:2021-08-14 15:11
lonely_8:UC 脚本 https://github.com/xiaoxiaoflood/firefox-scripts有个很要命的问题,替换掉config.js后,我的AnotherButton.uc用不了了 链接:https://pan.baidu.com/s/1jOyqaBthbkfbuBa8AYqbiw 提取码:aaaa |
|
6楼#
发布于:2021-08-14 16:18
lonely_8:这脚本本来就用不了的吧?抱歉,忘了上传配置文件。 这个是配置文件:链接:https://pan.baidu.com/s/13tY7DJKZLQKGjbZT96gSJw 提取码:aaaa 这个脚本之前是能用的 在此之前的config.js文件配置是这样的 try { Components.utils.import("resource://gre/modules/osfile.jsm"); Components.utils.import("resource://gre/modules/Services.jsm"); function UserChrome_js() { var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); os.addObserver(this, "final-ui-startup", false); }; UserChrome_js.prototype = { observe: function(aSubject, aTopic, aData) { var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); switch (aTopic) { case "final-ui-startup": var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("UChrm", Components.interfaces.nsIFile); file.append("userChrome.js"); if (file.exists() && file.isFile() && !Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULRuntime) .inSafeMode) { this.mFileURL = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService) .getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler) .getURLSpecFromFile(file); var path = OS.Constants.Path.libDir; path = OS.Path.join(path, "userChromeJS.js"); this.uCFileURI = OS.Path.toFileURI(path); os.addObserver(this, "domwindowopened", false); var blankWindow = Services.wm.getMostRecentWindow("navigator:blank"); blankWindow && blankWindow.addEventListener("load", this, true); } break; case "domwindowopened": aSubject.addEventListener("load", this, true); break; } }, handleEvent: function(aEvent) { var document = aEvent.originalTarget; if (document.location && document.location.protocol == "chrome:") { try { let loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader); loader.loadSubScript(this.uCFileURI, document.defaultView, "UTF-8"); loader.loadSubScript(this.mFileURL, document.defaultView, "UTF-8"); } catch (ex) { if (ex !== "stop") { Components.utils.reportError(ex); } } } } }; new UserChrome_js(); } catch(ex) { Components.utils.reportError(ex); }; |
|
7楼#
发布于:2021-08-14 16:23
kidzgy:抱歉,忘了上传配置文件。如你所述修改,在用了xiaoxiaoflood的config文件后依旧不可用。 |
|
8楼#
发布于:2021-08-14 17:57
最终效果图:
:root { --menu-padding: 0.2em !important; /*浏览器文字菜单间距*/ --context-menu-background-padding: 0.5em !important; /*含图标+文字所有菜单间距*/ --context-menu-text-padding: 1.5em !important;/*浏览器文字菜单间距*/ } menupopup { --menuitem-hover-background-color: rgba(90, 108, 234, 1) !important; --menu-background-color: rgba(60, 60, 60, 1) !important; --menu-color: #fff !important; --menu-disabled-color: rgba(251, 251, 254, 0.4) !important; --menu-border-color: rgba(255, 255, 255, 1) !important; --menu-icon-opacity: 1.0 !important; border: 1px solid rgba(56, 56, 56, 1) !important; } .menupopup-arrowscrollbox{ border: 2px solid rgba(255, 255, 255, 1) !important; } :not(menu, #ContentSelectDropdown, #context-navigation, #viewButton) > menupopup > menuitem, :not(menu, #ContentSelectDropdown, #context-navigation, #viewButton) > menupopup > menu, menuitem[checked="true"], menuitem.menuitem-iconic, menu.menu-iconic, #blockedPopupDontShowMessage { background-position: left 0.5em center !important; padding-inline-start: 0.5em !important; } :not(menu, #ContentSelectDropdown, #context-navigation, #viewButton) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist,.unified-nav-current), :not(menu, #ContentSelectDropdown, #context-navigation, #viewButton) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist,.unified-nav-current), menupopup:not(.in-menulist) > menuitem:not([checked="true"],.menuitem-iconic), menupopup:not(.in-menulist) > menu:not(.menu-iconic), #blockedPopupDontShowMessage { padding-inline-start: 2em !important; } /*复选框间距*/ :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem[type="checkbox"]:not([checked="true"]) > .menu-iconic-left { padding-inline-start: 1.5em !important; } /*调大字体*/ menu,menuitem { font-size:16px!important; font-family:"Microsoft YaHei UI" !important; } /*分隔线*/ menuseparator { -moz-appearance: none !important; list-style-image: none !important; background: none !important; border:solid 0.5px #555 !important; padding-top: 0px !important; padding-bottom: 0px !important; } /*菜单上下间距*/ menupopup > menuitem, menupopup > menu { padding-block: 0.2em !important; } /*子菜单箭头*/ .menu-right { margin-inline-end: 0.4em !important; } |
|
9楼#
发布于:2021-08-14 20:30
lonely_8:试试将 this.RebuildPopup(true); 替换成感谢解答。 运行UC脚本所需的基本JS文件,都下载了,我是在能使用styloaix的情况下,才测试AnotherButton.uc为无效的。当时是有按钮的,但是点击后没反应。 现在按照你的方法修改,可以正常使用了,感谢! 另外clone: false并不需要改true,如果改了true,开发工具弹出的菜单是另外的菜单。 |
|
10楼#
发布于:2021-08-14 20:34
AnotherButton能使用之后,发现DownloadPlus.uc使用不了了,还是用回之前的config吧,styloaix用不了就算了。
|
|
11楼#
发布于:2021-08-14 21:54
|
|
12楼#
发布于:2021-08-14 22:43
lonely_8:感觉是加载时机的问题。试试将 utils\userChrome.jsm 中链接:https://pan.baidu.com/s/1d_z4nkUuL5sFXCbUGrA9Og 提取码:aaaa 这个是我完整的UC脚本 |
|
13楼#
发布于:2021-08-14 23:09
lonely_8:这是改好了的 https://paste.ubuntu.com/p/Xw7ksQBRHX/回到原帖我对比了下修改的内容,就是你说的那写。难道我改的地方改错了? 不过重新试了下,确实又能用了。感谢! |
|
14楼#
发布于:2021-08-15 11:10
lonely_8:这是改好了的 https://paste.ubuntu.com/p/Xw7ksQBRHX/回到原帖又有新问题了,在xiaoxiaoflood的config的基础上,滚轮切换搜索栏搜索引擎.uc.js用不了了。 // ==UserScript== // @name 滚轮切换搜索栏搜索引擎.uc.js // @namespace https://github.com/Endor8/userChrome.js/blob/master/Firefox-57/SearchEngineWheelScroll.uc.js // @description wheelscroll to change search engine // @include main // @compatibility Firefox 57 // @author Endor8 // @version 2018/04/16 19:00 v1 // ==/UserScript== (function() { //Einstellungen - true = ein(aktiviert) false = aus(deaktiviert) //Namen und Symbol der Suchmaschine in der Suchleiste anzeigen const BUTTON_ONLY = false //Nur bei Suchleisten Suchschaltfläche anwenden - Suchmaschinen wechseln mit Scrollrad im Hauptkontextmenü deaktivieren const label = true; //Namen anzeigen const img = true; //Symbol - Favicon anzeigen //Doppelklick auf Suchleiste, um zur Standard Suchmaschine zurück zu kehren const only = false; //Suchleiste leeren und nicht zur Standardsuchmaschine zurückkehren [Neu in Version 0.6] const dbl = true; //Funktion aktivieren const zero = false; //Bei Klick zur obersten Suchmaschine zurückkehren const select = ' 百度 '; //Standard Suchmaschine angeben, zum Beispiel 'DuckDuckGo'. const erase = true; //Nach Suche Suchleiste leeren //[Aktion nach dem Suchen mit der Suchleiste] const auto = true; //Andere Einstellungen verwenden, durch einen Doppelklick auf die Suchleiste //Kontextmenü Suche wechseln mit[~~Suchen] const cxt = true; //Funktion aktivieren const icon = true; //Symbol - Favicon anzeigen const clk = true; //Klicken, um zur Standard Suchmaschine zurückzukehren (Andere Einstellungen verwenden ~ mit Doppelklick auf die Suchleiste) const sync = false; //Suchwort an die Suchleiste senden [Neu in Version 0.7] const hist = true; //Suchwort der Suchchronik der Suchleiste hinzufügen * Es ist OK, wenn die Synchronisation inkorrekt ist [Neu in Version 0.8] //[Verhalten beim Start] * Gilt auch beim Neustart const start0 = false; //Andere Einstellungen verwenden, durch Doppelklick auf die Suchleiste //Konfiguration const scrollRight = true; let bar = document.getElementById('searchbar'); let box = bar.textbox.inputField; let menu = document.getElementById('context-searchselect'); let BSS = Services.search; if(!!dbl) bar.addEventListener('dblclick', ResetE, false); bar.addEventListener('DOMMouseScroll', ChangeE, false); if(!!cxt) menu.addEventListener('wheel', ChangeE, false); if(!!clk) menu.addEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) }, false); window.addEventListener('unload', function uninit() { bar.removeEventListener('dblclick', ResetE, false); bar.removeEventListener('DOMMouseScroll', ChangeE, false); menu.removeEventListener('wheel', function(e){if(!!con) ChangeE(e)} , false); menu.removeEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) } , false); window.removeEventListener('unload', uninit , false); }, false); async function ResetE(){ this.engines = await BSS.getVisibleEngines(); if(!only){ if(!!zero || select == ''){BSS.defaultEngine = this.engines[0] }else{ BSS.defaultEngine = BSS.getEngineByName(select) } } if(!!erase || !!only) box.value = ''; } function CMenu() { let selectedText = menu.searchTerms || window.getSelection().toString(); if (selectedText.length > 15) { let truncLength = 15; let truncChar = selectedText[15].charCodeAt(0); if (truncChar >= 0xDC00 && truncChar <= 0xDFFF) truncLength++; selectedText = selectedText.substr(0, truncLength) + '\u2026'; } var menuLabel = gNavigatorBundle.getFormattedString('contextMenuSearch',[BSS.defaultEngine.name, selectedText]); menu.setAttribute('label', menuLabel); if(!icon || !cxt) return; let style = '@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#context-searchselect:before{margin:0 -20px 0 5px;content:"";display:inline-block;width:16px;height:16px;background:url('+ BSS.defaultEngine.iconURI.spec +');background-size:contain!important}'; let sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; } function SyncHistory(){ let val = menu.searchTerms; let addHistory = function(val){ setTimeout(function(){bar.FormHistory.update({op: "add", fieldname: "searchbar-history", value: val})}, 500); }; let removeHistory = function(callback, val){ bar.FormHistory.update({op: "remove", fieldname: "searchbar-history", value: val}); callback(val); } removeHistory(addHistory, val); } async function ChangeE(event) { if(BUTTON_ONLY && event.originalTarget.className !== 'searchbar-search-button' && event.originalTarget !== menu) return; let dir = (scrollRight ? 1 : -1) * Math.sign(event.detail || event.deltaY); this.engines = await BSS.getVisibleEngines(); let index = this.engines.findIndex(e => e.name === BSS.defaultEngine.name); this.engines[this.engines.length] = this.engines[0] if(index+dir < 0 || index+dir === this.engines.length - 1) return; BSS.defaultEngine = this.engines[index+dir]; } function ShowCurrentE(){ let E = BSS.defaultEngine; if(!!label)box.setAttribute('placeholder', E.name); let icon = bar.querySelector('.searchbar-search-icon'); if(!!img)icon.setAttribute('style', "list-style-image: url('"+ E.iconURI.spec +"') !important; -moz-image-region: auto !important; width: 16px !important; padding: 2px 0 !important;"); } Services.obs.addObserver(observe, "browser-search-engine-modified"); window.addEventListener("unload", () => { Services.obs.removeObserver(observe, "browser-search-engine-modified"); }); Services.obs.addObserver(ob2, "browser-search-service"); window.addEventListener("unload", () => { Services.obs.removeObserver(ob2, "browser-search-service"); }); function observe(aEngine, aTopic, aVerb) { if (aTopic == "browser-search-engine-modified") { aEngine.QueryInterface(Components.interfaces.nsISearchEngine); if(aVerb !== "engine-current" && aVerb !== 'engine-default') return; ShowCurrentE(); CMenu(); } } function ob2(aSubject, aTopic, aData) { if(aData === "init-complete" && aTopic === "browser-search-service") { if(!!start0) ResetE(); ShowCurrentE(); CMenu(); } } if(!auto) return; bar.cmd = bar.doSearch; bar.doSearch = function(aData, aWhere, aEngine) { this.cmd(aData, aWhere, aEngine); ResetE() } ShowCurrentE(); })() |
|
上一页
下一页