Beiträge von Endor
-
-
Vielen Dank.
Mfg.
Endor -
Aber gerne doch.

Freut mich wenn ich auch mal helfen kann.
Schönes Wochenende und eine tolle Woche wünsche ich Dir.
Mfg.
Endor -
Hallo 2002Andreas.
Gerne.
Der für Firefox 149userChrome.js/149/patchForBug1894910_allow_search_with_empty_text.uc.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comist für 149 frei gegeben.
// @compatibility 149
Teste den mal.
Mfg.
Endor -
Auch von meiner Seite vielen Dank.
Meins läuft mit der Änderung von hier: RE: BackupProfile.uc.js - div. Fragen dazu
auch wieder einwandfrei.
Mfg.
Endor -
Hallo 2002Andreas.
Der Autor hat es nochmals aktualisiert:Firefox 148
userChrome.js/148 at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comFirefox 149
userChrome.js/149 at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comMfg.
Endor -
Prima.

Mfg.
Endor -
wenn es doof läuft, ist so ein Button einfach weg und die Fehlersuche geht los.
Ja genau das selbe dachte ich mir auch eben.
Mfg.
Endor -
Hallo Mira_Belle .
Ja genau so funktioniert es.
Habe mal die ID eom-button vom Script extensionoptionmenu.uc.js da eingetragen
und nun taucht der Button, nach Firefox neustart, genau in diesem Menüpunkt auf
und nicht mehr in der Navigationsleiste.
Ja ich brauch das wahrscheinlich auch nicht.
Ich würde ihn aber auch nur mit CSS ausblenden.Mfg.
Endor -
Hallo. Entschuldigt die späte Antwort.
War unterwegs....Ich habe mich da auch schon gefragt, was das machen soll.
Es muss mit diesem Absatz zu tun haben:JavaScript
Alles anzeigen//メニューが長くなりすぎるので, あまり使わないメニューを"userChrome.jsの各スクリプトの設定"の下に移動させる //Wenn das Menü zu lang wird, verschieben Sie die Menüeinträge, die Sie nicht oft verwenden, unter „UserChrome.js Script Settings“. var userChromejsScriptOptionsMenu = { //あまり使わないメニューのリスト = Liste selten genutzter Menüpunkte menues: [ "GrabScroll_optionsMenu", "Patch_XULrubySupportMenu", "menutabTooltip", "PipeliningToggle", "linkInNewTabForSpecifiedPageToolMenu", "ieviewModokiTool", "linkloadInBackgroundToolMenu", "SaveFolderToolsMenu", "ucjs_copysysinfo-menu" ],Wie das aber genau gemeint ist, keine Ahnung.
Ich teste da mal etwas. Glaube ja wenn man die ID eines vorhandenen Scripts,
in die Liste einträgt, müsste es dann in diesem Menü auftauchen.
Mal testen.
Mfg.
Endor -
So geht es auch:
CSS
Alles anzeigen#userChromejs_options > menu[label='Alle UserScripte in ""'] > menupopup > menuitem[checked="true"]{ background-image: url("..//icons/Sidebar/Gruener-Hacken.png") !important; background-repeat: no-repeat !important; background-position: 6px 8px !important; background-size: 16px 16px !important; padding-left: 11px !important;} #userChromejs_options > menu[label='Alle UserScripte in ""'] > menupopup > menuitem:not([checked="true"]){ background-image: url("..//icons/Sidebar/notchecked.png") !important; background-repeat: no-repeat !important; background-position: 6px 9px !important; background-size: 16px 16px !important;} #userChromejs_options > menu[label='Alle UserScripte in ""'] > menupopup > menuitem:not([checked="true"])>.menu-text{ margin-left: -4px !important;} #userChromejs_options > menu[label='Alle UserScripte in ""'] > menupopup > menuitem[checked="true"]>.menu-text{ margin-left: -2px !important;} #userChromejs_options > menu[label='Alle UserScripte in ""'] > menupopup > menuitem[checked="true"]>.menu-icon{ visibility: hidden !important;}bitte diesen mal testen.
Mfg.
Endor -
:nth-child ist mEn nicht ganz optimal.
Ja das stimmt. Darum ging auch mein obiger Code mal wieder nicht.
Leider ist für dieses popup keine id vergeben worden.
Mira_Belle
Habe obigen CSS Code geändert, da du den Separator entfernt hast,
funktionierte er nicht mehr.
Bitte teste den nochmals.
Mfg.
Endor -
Hallo Mira_Belle .
Ich habe das hier so gemacht:
CSS
Alles anzeigen#userChromejs_options > menu:nth-child(6) > menupopup:nth-child(4) > menuitem[checked="true"]{ background-image: url("..//icons/Sidebar/Gruener-Hacken.png") !important; background-repeat: no-repeat !important; background-position: 6px 8px !important; background-size: 16px 16px !important; padding-left: 11px !important;} #userChromejs_options > menu:nth-child(6) > menupopup:nth-child(4) > menuitem:not([checked="true"]){ background-image: url("..//icons/Sidebar/notchecked.png") !important; background-repeat: no-repeat !important; background-position: 6px 9px !important; background-size: 16px 16px !important;} #userChromejs_options > menu:nth-child(6) > menupopup:nth-child(4) > menuitem:not([checked="true"])>.menu-text{ margin-left: -3px !important;} #userChromejs_options > menu:nth-child(6) > menupopup:nth-child(4) > menuitem[checked="true"]>.menu-text{ margin-left: -2px !important;} #userChromejs_options > menu:nth-child(6) > menupopup:nth-child(4) > menuitem[checked="true"]>.menu-icon{ visibility: hidden !important;}So wird nur dieses Popup angesprochen.
Icons:

Da ich Dein Script ja nicht habe, habe dazu das originale Script von alice genommen.
Daraus sind obige Bezeichnungen.Mfg.
Endor -
Die aktuelle Version von alice müsste passen:
userChrome.js/135/rebuild_userChrome.uc.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comwichtig ist nur auch die passende unserChrome.js Datei:
userChrome.js/135/userChrome.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comnur mit diesen funktioniert es hier.
Einfache Deutsche Version von rebuild_userChrome.uc.js:JavaScript
Alles anzeigen// ==UserScript== // @name rebuild_userChrome.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description userChrome.js Skriptcache leeren, neues Fenster öffnen und Script Verwaltung. // @charset utf-8 // @include main // @compatibility Firefox 135 // @author Alice0775 // @version 2024/12/22 fix Bug 1936336 - Disallow inline event handlers // @version 2023/09/07 remove to use nsIScriptableUnicodeConverter // @version 2023/06/20 remove Bug 1780695 - Remove Services.jsm // @version 2022/04/01 23:00 Convert Components.utils.import to ChromeUtils.import // @version 2022/04/01 remove nsIIOService // @version 2020/04/25 14:00 prevent close menu when middleclick // Date 2019/05/21 08:30 fix 69.0a1 Bug 1534407 - Enable browser.xhtml by default, Bug 1551320 - Replace all CreateElement calls in XUL documents with CreateXULElement // @version 2019/04/19 14:00 Fixed 68a1 due to Bug 1519502 - Convert menu bindings to a Custom Element // @version 2018/04/14 00:00 de XUL // @version 2017/11/23 23:00 Services :( // @version 2017/11/14 21:00 use nsIFile instead nsILocalFile // @version 2017/11/14 21:00 use Services.jsm // @version 2016/11/28 21:00 remove "for each" // @version 2015/12/04 24:00 Bug 1177310 [e10s] Stop using CPOWs on application shutdow // @version 2013/03/20 24:00 force cancel default right click action for unknown modification // @version 2013/03/22 08:02 Added "use strict" // @version 2013/03/22 08:01 Fixed commands to work properly, even if menus had been moved into other place // @version 2013/03/22 08:00 Fixed dragdrop target // @version 2013/03/20 24:00 autocheck=false for script menu // @version 2012/11/30 22:00 ubuntu12.04.1 "chromeフォルダを開く" に失敗することがあるのを修正 // ==/UserScript== // @version 2012/09/30 09:00 ubuntu12.04.1 "chromeフォルダを開く" に失敗することがあるのを修正 // @version 2012/02/25 23:00 restart // @version 2010/10/25 22:00 Bug 574688 adon bar // @version 2010/07/04 00:00 nsDragAndDrop // @version 2009/11/14 00:00 Seamonkeyに対応 // @version 2009/08/24 00:00 Namoroka3.6a2pre で右クリックでのスクリプト編集時にコンテキストメニューが表示されるのを修正 // @version 2009/04/10 00:00 Minefield3.6a1pre での動作改善 // @version 2009/03/27 00:00 nsIProcess変更 // @version 2008/02/25 00:00 reuseのデフォルト値trueに変更 // @version 2008/01/09 02:00 スクリプト保存ファイルピッカーをキャンセル時のエラー処理追加 // @version 2008/01/04 16:00 スクリプトのドロップをstatusbar-display上に変更 // @version 2007/12/15 18:00 base64データスキームの保存に対応 // @version 2007/12/15 02:00 ttp://の保存に対応 // @version 2007/12/15 01:00 メニューが表示されない場合があるのを修正 // @version 2007/12/14 23:00 saveFolderModokiがある時スクリプトのリンクをステータスバーの左1/3にドロップすることで, chrmeホルダに保存するようにした // @version 2007/12/14 19:00 日本語のファイル名のスクリプトの有効/無効が機能していなかったのを修正 // @version 2007/12/14 17:00 スクリプトの有効/無効/編集を設定できるようにした // @Note 使用するエディタを編集しておくこと // @Note Required Sub-Script/Overlay Loader v3.0.38mod( https://github.com/alice0775/userChrome.js/blob/master/userChrome.js ) var userChromejs = { // --- config --- editor: (AppConstants.platform == "win") ? "C:\\Program Files\\Notepad++\\notepad++.exe" : ((AppConstants.platform == "linux") ?"/usr/bin/gedit" /*"/usr/bin/xed"*/ : ""), // --- config --- _statusDisplay: null, get statusDisplay() { if (!this._statusDisplay) this._statusDisplay = document.getElementById('status-bar') || document.getElementById('statusbar-display'); return this._statusDisplay; }, _addonbar: null, get addonbar() { if (!this._addonbar) this._addonbar = document.getElementById('addon-bar'); return this._addonbar; }, handleEvent: function(event) { switch(event.type) { case 'dragover': this.dragover(event); break; case 'drop': this.drop(event); break; case 'unload': this.uninit(); break; } }, createElement: function(localName, arryAttribute) { let elm = document.createXULElement(localName); for(let i = 0; i < arryAttribute.length; i++) { elm.setAttribute(arryAttribute[i].attr, arryAttribute[i].value); } return elm; }, init: function(){ window.addEventListener("unload",this , false); let ref = document.getElementById("menu_preferences"); let menu = ref.parentNode.insertBefore( this.createElement("menu", [{attr: "id", value:"userChrome.js_menu"}, {attr: "label", value:"userChrome.js Einstellungen"}, {attr: "accesskey", value:"u"} ]), ref); let popup = menu.appendChild(this.createElement("menupopup", [{attr: "id", value:"userChromejs_options"}, /*{attr: "onpopupshowing", value:"userChromejs.onpopup()"},*/ {attr: "context", value:""} ])); popup.appendChild(this.createElement("menuitem", [{attr: "id", value:"userChrome_setting"}, {attr: "label", value:"Skript für jedes Fenster neuladen"}, {attr: "accesskey", value:"u"}, /*{attr: "oncommand", value:"userChromejs.setting();"},*/ {attr: "type", value:"checkbox"} ])); popup.appendChild(this.createElement("menuitem", [{attr: "id", value:"userChrome_rebuild"}, {attr: "label", value:"userChrome.js/Neues Fenster neu erstellen"}, {attr: "accesskey", value:"x"}, /*{attr: "oncommand", value:"userChromejs.rebuild();"}*/ ])); popup.appendChild(this.createElement("menuitem", [{attr: "id", value:"userChrome_restartApp"}, {attr: "label", value:"Browser neustarten"}, {attr: "accesskey", value:"r"}, /*{attr: "oncommand", value:"userChromejs.restartApp();"}*/ ])); popup.appendChild(this.createElement("menuitem", [{attr: "id", value:"userChrome_openChrome"}, {attr: "label", value:"chrome Ordner öffnen"}, {attr: "accesskey", value:"h"}, /*{attr: "oncommand", value:'new Components.Constructor("@mozilla.org/file/local;1","nsIFile", "initWithPath")(Services.dirsvc.get("UChrm", Components.interfaces.nsIFile).path).reveal();'}*/ ])); menu = ref.parentNode.insertBefore( this.createElement("menu", [{attr: "id", value:"userChromejs_script_options_Menu"}, {attr: "label", value:"userChrome.js Scripte"}, {attr: "accesskey", value:"s"} ]), ref); popup = menu.appendChild(this.createElement("menupopup", [{attr: "id", value:"userChromejs_script_options"} ])); document.getElementById('userChrome_setting').addEventListener("command", () => userChromejs.setting()); document.getElementById('userChrome_rebuild').addEventListener("command", () => userChromejs.rebuild()); document.getElementById('userChrome_restartApp').addEventListener("command", () => userChromejs.restartApp()); document.getElementById('userChrome_openChrome').addEventListener("command", () => {new Components.Constructor("@mozilla.org/file/local;1","nsIFile", "initWithPath")(Services.dirsvc.get("UChrm", Components.interfaces.nsIFile).path).reveal()}); if (AppConstants.platform == "linux") userChromejs.onpopup(); if ("nsDragAndDrop" in window && this.statusDisplay) { this.statusDisplay.addEventListener('dragover',function(event){nsDragAndDrop.dragOver(event,userChromejs.dndObserver);},true); this.statusDisplay.addEventListener('dragdrop',function(event){nsDragAndDrop.drop(event,userChromejs.dndObserver);},true); } else if(this.addonbar) { this.addonbar.addEventListener('dragover', this ,true); this.addonbar.addEventListener('drop', this ,true); } this.addPrefListener(userChromejs.readLaterPrefListener); // 登録処理 document.getElementById("menu_ToolsPopup").addEventListener("popupshowing", function(event) {if (event.target == this) userChromejs.onpopup(event);}, false); }, uninit: function(){ if ("nsDragAndDrop" in window && this.statusDisplay) { this.statusDisplay.removeEventListener('dragover',function(event){nsDragAndDrop.dragOver(event,userChromejs.dndObserver);},true); this.statusDisplay.removeEventListener('dragdrop',function(event){nsDragAndDrop.drop(event,userChromejs.dndObserver);},true); } else if(this.addonbar) { this.addonbar.removeEventListener('dragover', this ,true); this.addonbar.removeEventListener('drop', this ,true); } this.removePrefListener(userChromejs.readLaterPrefListener); // 登録解除 }, dragover: function(event) { var dragService = Cc["@mozilla.org/widget/dragservice;1"] .getService(Ci.nsIDragService); var dragSession = dragService.getCurrentSession(); var supportedTypes = ["text/x-moz-url", "text/unicode", "application/x-moz-file"]; for (let type of supportedTypes) { if (event.dataTransfer.types.contains(type)) { var data = event.dataTransfer.getData(type); var url = (/^\s*(.*?)\s*$/m.test(data)) ? RegExp.$1 : null; if (/(\.uc\.js|\.uc\.xul|\.uc\.xul\.txt)$/.test(url)) { dragSession.canDrop = true; event.preventDefault(); return; } } } }, drop: function(event) { var dragService = Cc["@mozilla.org/widget/dragservice;1"] .getService(Ci.nsIDragService); var dragSession = dragService.getCurrentSession(); var supportedTypes = ["text/x-moz-url", "text/unicode", "application/x-moz-file"]; for (let type of supportedTypes) { if (event.dataTransfer.types.contains(type)) { var data = event.dataTransfer.getData(type); this.dndObserver.onDrop(event, {data: data}, dragSession); return; } } }, dragDropSecurityCheck: function dragDropSecurityCheck(event, dragSession, url) { if (!url) return false; // need to do a security check to make // sure the source document can load the dropped URI. url = url.replace(/^\s*|\s*$/g, ''); if (url.indexOf('chrome://') == 0 || url.indexOf('file://') == 0) return url; // urlSecurityCheck try { urlSecurityCheck(url, gBrowser.contentPrincipal, Ci.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL); } catch(e) { event.stopPropagation(); //throw 'Drop of ' + url + ' denied.'; return false; } return url; }, dndObserver: { getSupportedFlavours : function () { var flavours = new FlavourSet(); flavours.appendFlavour("text/x-moz-url"); flavours.appendFlavour("text/unicode"); flavours.appendFlavour("application/x-moz-file"); return flavours; }, onDragOver: function (evt,flavour,session){}, onDrop: function (evt,dropdata,session){ var fname; evt.stopPropagation(); evt.preventDefault(); if (dropdata.data!=""){ //ステータスバーの左1/3にドロップしたか var target = evt.target; while(target){ if(target == userChromejs.statusDisplay || target == userChromejs.addonbar) break; target = target.parentNode; } if(!target) return; if(evt.screenX > target.boxObject.screenX + target.boxObject.width/3) return; //saveFolderModokiが必要 if(!saveFolderModoki) return; //ドロップしたurl var url = (/^\s*(.*?)\s*$/m.test(dropdata.data))?RegExp.$1:null; //保存ホルダ nsIFile var folder = Services.dirsvc.get("UChrm", Components.interfaces.nsIFile); //デフォルトのファイル名 if(/(.*)\n?(.*)?/m.test(dropdata.data) ) fname = RegExp.$2?RegExp.$2:""; //データスキームか if(/(^data:text\/javascript(;.*)?,?)|(^data:application\/x-javascript(;.*)?,?)/.test(url)){ // urlSecurityCheck は saveFolderModoki.directSaveLinkで実施している saveScript(url, fname, folder); }else{ //リンクか if(!/(^h?ttps?:\/\/)|(^ftp:\/\/)/.test(url)) return; if (/^h?.?.p(s?):(.+)$/i.test(url)){ url = "http" + RegExp.$1 + ':' + RegExp.$2; if(!RegExp.$2) return null; fname = url.match(/.+\/(.+)$/)[1]; } fname = fname.replace(/\.uc\.xul\.txt$/,'.uc.xul'); //スクリプトファイルか? if(/(\.uc\.js|\.uc\.xul|\.uc\.xul\.txt)$/.test(url)){ if (typeof gBrowser.dragDropSecurityCheck == 'function') gBrowser.dragDropSecurityCheck(evt, session, url); else { userChromejs.dragDropSecurityCheck(evt, session, url) } saveScript(url, fname, folder); } } } function saveScript(url, fname, folder){ //ファイルピッカによりnsIFile決定 var aFile = getFolderPath(fname, folder) if(!aFile) return; //フォルダパス folder = aFile.path.replace(aFile.leafName,''); //nsILocalFileのフォルダ var aFolder = saveFolderModoki.initFileWithPath(folder); if(!aFolder) return; //リンクを保存 saveFolderModoki.directSaveLink(null, url, aFile.leafName, gBrowser.currentURI, aFolder); } function getFolderPath(fname, folder){ //ファイルピッカにより保存先決定 var fp = Components.classes['@mozilla.org/filepicker;1'] .createInstance(Components.interfaces.nsIFilePicker); fp.init(window, "Save script As", fp.modeSave); fp.appendFilter("Script Files","*.uc.js; *.uc.xul"); if(/\.uc\.js$/.test(fname)){ fp.defaultExtension = "uc.js"; fp.defaultString = fname; }else if(/\.uc\.xul$/.test(fname)){ fp.defaultExtension = "uc.xul"; fp.defaultString = fname; }else{ fp.defaultExtension = "uc.js"; fp.defaultString = fname + ".uc.js"; } fp.displayDirectory = folder; if ( fp.show() == fp.returnCancel || !fp.file ) return; //nsIFile return fp.file; } } }, rebuild: function(){ var flag = this.getPref("userChrome.enable.reuse",'bool',true); this.setPref("userChrome.enable.reuse",'bool',false); setTimeout(function(){OpenBrowserWindow();}, 0); setTimeout(function(self,flag){self.setPref("userChrome.enable.reuse",'bool',flag);},2000,this,flag); }, setting: function(){ var flag = this.getPref("userChrome.enable.reuse",'bool',true); this.setPref("userChrome.enable.reuse",'bool',!flag); }, onpopup: function(event){ var menu; var flag = this.getPref("userChrome.enable.reuse",'bool',true); var menuitem = document.getElementById('userChrome_setting'); menuitem.setAttribute('checked', !flag); var menupopup = document.getElementById("userChromejs_options"); for(var i = 4, len = menupopup.childNodes.length; i < len; i++){ menupopup.removeChild(menupopup.lastChild); } var menuseparator = document.createXULElement('menuseparator'); menupopup.appendChild(menuseparator); menuitem = document.createXULElement('menuitem'); menuitem.setAttribute('label','userCrome.js Aktivieren/Deaktivieren'); //menuitem.setAttribute('oncommand','userChromejs.chgDirStat("*");'); //menuitem.setAttribute('onclick','userChromejs.clickDirMenuitem(event,true);'); menuitem.setAttribute('type','checkbox'); menuitem.setAttribute('checked', !userChrome_js.dirDisable['*']); menuitem.dirName = '*'; menupopup.appendChild(menuitem); menuitem.addEventListener('command', () => userChromejs.chgDirStat("*")); menuitem.addEventListener('click', (event) => userChromejs.clickDirMenuitem(event,true)); for(var j = 0, lenj = userChrome_js.arrSubdir.length; j < lenj; j++){ var dirName = userChrome_js.arrSubdir[j] == "" ? "root" : userChrome_js.arrSubdir[j]; var flg = false; for(var i = 0, len = userChrome_js.scripts.length; i < len; i++){ var script = userChrome_js.scripts[i]; if(script.dir != dirName) continue; flg = true; break; } if(!flg){ for(var i = 0, len = userChrome_js.overlays.length; i < len; i++){ var script = userChrome_js.overlays[i]; if(script.dir != dirName) continue; flg = true; break; } } if(!flg) continue; menu = document.createXULElement('menu'); menu.setAttribute('label','chrome/' + (dirName=="root"?"":dirName) ); menu.addEventListener('click', (event) => userChromejs.clickDirMenu(event)); //menu.setAttribute('onclick','userChromejs.clickDirMenu(event);'); if(userChrome_js.dirDisable[dirName]) menu.setAttribute('style', 'font-style:italic;'); menu.dirName = dirName; menupopup = document.createXULElement('menupopup'); //menupopup.setAttribute('onpopupshowing','event.stopPropagation();'); menuitem = document.createXULElement('menuitem'); menuitem.setAttribute('label','chrome/' + (dirName=="root"?"":dirName) + ' Aktivieren/Deaktivieren Scripte Chromeordner'); //menuitem.setAttribute('oncommand', 'userChromejs.chgDirStat(this.dirName);'); //menuitem.setAttribute('onclick','userChromejs.clickDirMenuitem(event);'); menuitem.setAttribute('type', 'checkbox'); menuitem.setAttribute('checked', !userChrome_js.dirDisable[dirName]); menuitem.dirName = dirName; menupopup.appendChild(menuitem); menuitem.addEventListener('command', () => userChromejs.chgDirStat(this.dirName)); menuitem.addEventListener('click', (event) => userChromejs.clickDirMenuitem(event)); menuseparator = document.createXULElement('menuseparator'); menupopup.appendChild(menuseparator); var flg = false; for(var i = 0, len = userChrome_js.scripts.length; i < len; i++){ var script = userChrome_js.scripts[i]; if(script.dir != dirName) continue; flg = true; menuitem = document.createXULElement('menuitem'); menuitem.setAttribute('label',script.filename); //menuitem.setAttribute('oncommand','userChromejs.chgScriptStat(this.script.filename);'); //menuitem.setAttribute('onclick','userChromejs.clickScriptMenu(event);'); //menuitem.setAttribute('onmouseup','if(event.button == 1) event.preventDefault();'); menuitem.setAttribute('type','checkbox'); menuitem.setAttribute('autocheck','false'); menuitem.setAttribute('checked',!userChrome_js.scriptDisable[script.filename] ); if(script.description) menuitem.setAttribute('tooltiptext',script.description); menuitem.script = script; menupopup.appendChild(menuitem); menuitem.addEventListener('command', () => userChromejs.chgScriptStat(this.script.filename)); menuitem.addEventListener('click', (event) => userChromejs.clickScriptMenu(event)); menuitem.addEventListener('mouseup', (event) => {if(event.button == 1) event.preventDefault()}); } for(var i = 0, len = userChrome_js.overlays.length; i < len; i++){ var script = userChrome_js.overlays[i]; if(script.dir != dirName) continue; if(flg){ menuseparator = document.createXULElement('menuseparator'); menupopup.appendChild(menuseparator); } flg = false; menuitem = document.createXULElement('menuitem'); menuitem.setAttribute('label',script.filename); //menuitem.setAttribute('oncommand','userChromejs.chgScriptStat(this.script.filename);'); //menuitem.setAttribute('onclick','userChromejs.clickScriptMenu(event);'); //menuitem.setAttribute('onmouseup','if(event.button == 1) event.preventDefault();'); menuitem.setAttribute('type','checkbox'); menuitem.setAttribute('autocheck','false'); menuitem.setAttribute('checked',!userChrome_js.scriptDisable[script.filename] ); if(script.description) menuitem.setAttribute('tooltiptext',script.description); menuitem.script = script; menupopup.appendChild(menuitem); menuitem.addEventListener('command', () => userChromejs.chgScriptStat(this.script.filename)); menuitem.addEventListener('click', (event) => userChromejs.clickScriptMenu(event)); menuitem.addEventListener('mouseup', (event) => {if(event.button == 1) event.preventDefault()}); } menu.appendChild(menupopup); menupopup = document.getElementById("userChromejs_options"); menupopup.appendChild(menu); } }, clickDirMenu: function(event){ if(event.button == 1 || event.button == 2){ event.stopPropagation(); event.preventDefault(); userChromejs.chgDirStat(event.target.dirName); if(event.target.firstChild && event.target.firstChild.firstChild) event.target.firstChild.firstChild.setAttribute('checked',!userChrome_js.dirDisable[event.target.dirName] ); if(!!userChrome_js.dirDisable[event.target.dirName]) event.target.setAttribute('style', 'font-style:italic;'); else event.target.removeAttribute('style'); } }, clickDirMenuitem: function(event,stop){ if(event.button == 1 || event.button == 2){ event.stopPropagation(); event.preventDefault(); userChromejs.chgDirStat(event.target.dirName); event.target.setAttribute('checked',!userChrome_js.dirDisable[event.target.dirName] ); if(!stop && !!userChrome_js.dirDisable[event.target.dirName]) event.target.parentNode.parentNode.setAttribute('style', 'font-style:italic;'); else event.target.parentNode.parentNode.removeAttribute('style'); } }, clickScriptMenu: function(event){ if(event.button==1){ event.stopPropagation(); event.preventDefault(); userChromejs.chgScriptStat(event.target.script.filename); event.target.setAttribute('checked',!userChrome_js.scriptDisable[event.target.script.filename] ); }else if(event.button==2){ event.stopPropagation(); event.preventDefault(); this.launchEditor(event.target.script); } }, launchEditor: function(aScript){ var editor = this.editor; var path = Services.io.newURI(aScript.url) .QueryInterface(Ci.nsIFileURL).file.path; var appfile = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsIFile); appfile.initWithPath(editor); var process = Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess); process.init(appfile); process.runw(false, [path], 1, {}); }, chgDirStat: function(adirName){ var s = userChromejs.getPref("userChrome.disable.directory", "str", ""); if(!userChrome_js.dirDisable[adirName]){ s = (s+',').replace(adirName+',','') + adirName+','; }else{ s = (s+',').replace(adirName+',',''); } s = s.replace(/,,/g,',').replace(/^,/,''); userChromejs.setPref("userChrome.disable.directory", "str", s); userChrome_js.dirDisable = this.restoreState(s.split(',')); }, chgScriptStat: function(afilename){ var s = userChromejs.getPref("userChrome.disable.script", "str", ""); if(!userChrome_js.scriptDisable[afilename]){ s = (s+',').replace(afilename+',','') + afilename+','; }else{ s = (s+',').replace(afilename+',',''); } s = s.replace(/,,/g,',').replace(/^,/,''); userChromejs.setPref("userChrome.disable.script", "str", s); userChrome_js.scriptDisable = this.restoreState(s.split(',')); }, restoreState: function (arr){ var disable = []; for(var i = 0,len = arr.length; i < len; i++) disable[arr[i]] = true; return disable; }, //prefを読み込み getPref: function(aPrefString, aPrefType, aDefault){ var xpPref = Services.prefs; try { switch (aPrefType){ case 'complex': return xpPref.getComplexValue(aPrefString, Components.interfaces.nsIFile); break; case 'str': return unescape(xpPref.getCharPref(aPrefString).toString()); break; case 'int': return xpPref.getIntPref(aPrefString); break; case 'bool': default: return xpPref.getBoolPref(aPrefString); break; } } catch(e) {} return aDefault; }, //prefを書き込み setPref: function(aPrefString, aPrefType, aValue){ var xpPref = Services.prefs; try { switch (aPrefType){ case 'complex': return xpPref.setComplexValue(aPrefString, Components.interfaces.nsIFile, aValue); break; case 'str': return xpPref.setCharPref(aPrefString, escape(aValue)); break; case 'int': aValue = parseInt(aValue); return xpPref.setIntPref(aPrefString, aValue); break; case 'bool': default: return xpPref.setBoolPref(aPrefString, aValue); break; } } catch(e) {} return null; }, // 監視を開始する addPrefListener: function(aObserver) { try { var pbi = Services.prefs; pbi.addObserver(aObserver.domain, aObserver, false); } catch(e) {} }, // 監視を終了する removePrefListener: function(aObserver) { try { var pbi = Services.prefs; pbi.removeObserver(aObserver.domain, aObserver); } catch(e) {} }, readLaterPrefListener:{ domain : 'userChrome.disable', //"userChrome.disable"という名前の設定が変更された場合全てで処理を行う observe : function(aSubject, aTopic, aPrefstring) { if (aTopic == 'nsPref:changed') { // 設定が変更された時の処理 setTimeout(function(){ var s = userChromejs.getPref("userChrome.disable.directory", "str", ""); userChrome_js.dirDisable = userChromejs.restoreState(s.split(',')); s = userChromejs.getPref("userChrome.disable.script", "str", ""); userChrome_js.scriptDisable = userChromejs.restoreState(s.split(',')); }, 0); } } }, restartApp: function() { if ("BrowserUtils" in window && typeof BrowserUtils.restartApplication == "function") { Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart(); BrowserUtils.restartApplication(); return; } const appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(Components.interfaces.nsIAppStartup); // Notify all windows that an application quit has been requested. var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"] .createInstance(Components.interfaces.nsISupportsPRBool); os.notifyObservers(cancelQuit, "quit-application-requested", null); // Something aborted the quit process. if (cancelQuit.data) return; // Notify all windows that an application quit has been granted. os.notifyObservers(null, "quit-application-granted", null); // Enumerate all windows and call shutdown handlers var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var windows = wm.getEnumerator(null); var win; while (windows.hasMoreElements()) { win = windows.getNext(); if (("tryToClose" in win) && !win.tryToClose()) return; } let XRE = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime); if (typeof XRE.invalidateCachesOnRestart == "function") XRE.invalidateCachesOnRestart(); appStartup.quit(appStartup.eRestart | appStartup.eAttemptQuit); } } userChromejs.init(); //メニューが長くなりすぎるので, あまり使わないメニューを"userChrome.jsの各スクリプトの設定"の下に移動させる var userChromejsScriptOptionsMenu = { //あまり使わないメニューのリスト menues: [ "GrabScroll_optionsMenu", "Patch_XULrubySupportMenu", "menutabTooltip", "PipeliningToggle", "linkInNewTabForSpecifiedPageToolMenu", "ieviewModokiTool", "linkloadInBackgroundToolMenu", "SaveFolderToolsMenu", "ucjs_copysysinfo-menu" ], interval: 500, //0.5秒間隔 maxcount: 50, //最大50回までトライ count: 0, timer: null, run: function() { //DOMの構築が完了するのを待ってからメニューを移動させる(5秒間隔で最大50回までトライ) this.timer = setInterval(function(self){ if (++self.count > self.maxcount || self.moveMenu()) clearInterval(self.timer); }, this.interval, this); }, moveMenu: function(){ var menupopup = document.getElementById('userChromejs_script_options'); if (!menupopup) return false; var i = 0; while (i < this.menues.length) { var menu = document.getElementById(this.menues[i]) if (menu) { setTimeout(function(menupopup, menu){menupopup.appendChild(menu);}, 100, menupopup, menu); this.menues.splice(i, 1); continue; } i++; } return this.menues.length == 0 ? true : false; }, } userChromejsScriptOptionsMenu.run();Das Script fügt zwei Einträge unter Extras in der Menüleiste ein.
Mfg.
Endor -
Gerne.
Falls Du das rebuild_userChrome.uc.js Script von Alice nochmals testen willst
das wäre die aktuellste Version und setzt aber eben die oben erwähnte Datei voraus:
userChrome.js/135/rebuild_userChrome.uc.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comMfg.
Endor -
Hallo Mira_Belle .
Du musst wahrscheinlich anstelle unserer userchrome.js Datei im Chromeordner,
die von alice verwenden, unsere enthält ja nur den zweizeiler, die von alice
hat da einiges mehr, Subscriptloader usw.
userChrome.js/141/userChrome.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comMfg.
Endor -
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
-
Sidebar Script von Alice siehe hier:
userChrome.js/142/SidebarModoki.uc.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comDas ist die neueste Version.
Das Script aus #11
funktioniert hier einwandfrei.
juras
Vielen Dank dafür.Mfg.
Endor -
Meine Version in #10 ist die originale und aktuelle vom Autor alice0775,
nur auf Deutsch übersetzt.
Quelle:
userChrome.js/140/UndoListInTabmenuToo.uc.js at master · alice0775/userChrome.jsContribute to alice0775/userChrome.js development by creating an account on GitHub.github.comMfg.
Endor -
Es gibt mittlerweile Version 8.9
Download Notepad++ v8.9: security enhancements | Notepad++Mfg.
Endor