2002Andreas, Sören Hentzschel. Danke für den Hinwei. Ja ich habe hier im Code beide Suchleisten-Einträge und beide Adressenleiste zusammen. Ich hatte wirklich verschoben.
Beiträge von milupo
-
-
Wen es interessiert, hier noch die die Textfarben für die Adressleiste (blau) und die Suchleiste (rot) mit fetter Auszeichnung für Firefox 68.0.1:
-
Hallo aborix, danke, bei mir scheint dein Skript zu funktionieren.
-
Gehe mal in das Anpassenfenster mache eine Verschiebeaktion, schließe das Anpassenfenster. Bei mir funktioniert es dann.
-
Bitte auch eine kurze Notiz in den Hinweisthread zu Änderungen für Fx 68 und 69 einfügen, damit man das leichter wiederfindet.
Erledigt, siehe:
-
Seit dem 19.07.2019 können 70er Nightlies bei Verwendung bestimmter Benutzerskripte abstürzen, nämlich solcher Skripte, die die JavaScript-Funktion eval() verwenden. Firefox stürzt dabei sofort beim Start ab, ohne dass ihr etwas tun könnt.
Als erstes solltet ihr euch davon überzeugen, was den Absturz verursacht. Startet einen Texteditor und öffnet darin euer Profilverzeichnis. Im Profilverzeichnis gibt es einen Ordner crashes und darin einen Unterordner events. Im Ordner events gibt es eine Datei oder mehrere Dateien mit einem kryptischen Dateinamen ohne Dateiendung. Dieser kryptische Dateiname ist eigentlich die Absturz-ID, z. B. f45a4550-7bea-480a-92fa-9d3a550398f7. Diese Dateien sind reine Textdateien, die ihr jedoch, weil sie keine Dateiendung haben, nicht einfach mit Doppelklick öffnen könnt. Allerdings fragt euch Windows dann, mit welchem Programm ihr sie öffnen wollt, dann solltet ihr immer einen/euren Texteditor auswählen, z. B. Notepad++.
In der Datei scrollt ihr dann hinunter bis fast zum Ende und es kommt dann folgende Zeile:
CodeMozCrashReason=do not use eval with system privileges: file:///c:/users/lenovo%20m58/appdata/roaming/mozilla/firefox/profiles/n8ilmaz4.testnightly69-5/chrome/speicherort_aendern-hsb.uc.js
MozCrashReason bezeichnet die Absturzursache. Hier ist do not use eval with system privileges als Ursache angegeben, also „Verwenden Sie eval nicht mit Systemrechten“. Das ist genau das in diesem Beitrag benannte Problem. Hinter dem folgenden Doppelpunkt ist der Pfad zum betroffenen Skript angegeben, hier also
Codefile:///c:/users/lenovo%20m58/appdata/roaming/mozilla/firefox/profiles/n8ilmaz4.testnightly69-5/chrome/speicherort_aendern-hsb.uc.js.
Es kann aber noch weitere Skripte betreffen, denn Firefox stürzt sofort nach dem ersten betroffenen Skript ab und kommt gar nicht erst zu weiteren betroffenen Skripten.
Für dieses Problem mit der Funktion eval() gibt es zwei Lösungen:
- Die Skripte entfernen, also nicht mehr nutzen. Das bietet sich vor allen Dingen an, wenn sie sowieso nicht mehr richtig funktionieren.
- Oder ihr geht in about:config, sucht nach der Einstellung security.allow_eval_with_system_principal und setzt deren Wert auf true. Dann lassen sich die betroffenen Skripte dennoch verwenden, ohne dass Firefox abstürzt.
Damit ihr die Einstellung ändern könnt, müsst ihr erst das Skript im Profil deaktivieren, das heißt, die Datei umbenennen, z. B. benutzerskript.uc.js in benutzerskript.txt oder ganz aus dem Profil entfernen. Ansonsten stürzt Firefox wieder ab. Das ist sowieso noch möglich, wenn es noch weitere betroffene Skripte gibt. Dann könnt ihr die Skripte wieder zurückumbenennen.
-
In Fx 68.0.1 funktioniert es bei mir nur nach Heruntersetzen der Pixelwerte unter 10px in den Zeilen 6 und 7. Ist ja auch logisch, denn die 10px beruhen auf den 50 Einträgen von waldmeister24. Ich habe wie cartridge_case 100 Einträge verwendet. Eigenartig ist nur, dass die Anpassung im Nightly nicht notwendig ist.
-
Andreas, mit welcher Fx-Version hast du getestet? Das Problem tritt bei mir nur mit Fx 68.0.1 auf, im Nightly erscheint die Scrollbar.
-
mag sein, dass der Code in euren Augen fehlerhaft ist, aber dieser funktioniert hier in einem neuen Fx mit neuen Profil.
Was heißt in „in unseren Augen“. Wir haben die CSS-Regeln nicht gemacht. Du kannst ja auch machen, was du willst, aber wenn du Code weitergibst, sollte er schon korrekt sein.
-
diesen Code habe ich wegen Benutzung von Stylus in einem neuen Profil getestet und funktioniert, wie er soll.
Mit dem !important? Mir scheint, du hast das erst später hinzugefügt und zwar statt vor der schließenden Klammer dahinter. Und da ja der Code nach dem !important; mit eine Klammer abgeschlossen wird, hast du noch eine zusätzliche Klammer hinzugefügt.
-
Das dürfte aber nicht funktionieren, denn hier ist eine geschweifte Klammer zuviel. Die Klammer hinter none gehört da nicht hin.
-
(in Bezug auf vorstehenden gelöschten Beitrag): Boersenfeger, du musst zwischen Gestaltung per CSS und Zuweisung von Funktionalität unterscheiden. Mit CSS kannst du die Sidebar nur nach Gutdünken gestalten, es kann aber nicht die Funktionalität der Sidebar ausführen. Das wird durch den Programmcode von Firefox übernommen, dadurch musst du erst die Sidebar mit dem Button einschalten. Die Funktionalität der Sidebar lässt sich sicherlich beeinflussen, das geht dann aber nur mit einem Skript.
-
-
Dein Code funktioniert auch noch. Die Sidebar erscheint bei mir nur dann leer, wenn die Anzeige der Sidebar ausgeschalten ist. Klick einfach auf das entsprechende Symbol in der Symbolleiste.
-
Bei mir funktioniert der Code, allerdings habe ich nur den Code bis Zeile 112.
Lösche mal diese Text aus Zeile 3;
und diesen Text aus Zeile 6:
Schließlich lösche das Komma am Ende von Zeile 5.
Die beiden Dateien bookmarksPanel.xul und history-Panel.xul gibt es nicht mehr.
-
Habe die von Sören erwähnte Einstellung security.allow_eval_with_system_principal mal auf true gesetzt und das Lesezeichen-Skript wieder im Ordner chrome abgespeichert, das Nightly stürzt wirklich nicht mehr ab. Es wäre aber besser, wenn Firefox gar nicht abstürzen würde, sondern eine Warnung o. ä. erschiene, damit man als Nutzer handlungsfähig bleibt. An about:crashes kommt man ja in einem solchen Moment nicht heran.
-
Hallo,
ich habe jetzt erstmal nur das letzte Script getestet. Der Absturz ist beabsichtigt, eine sogenannte Assertion, wie man in der Programmierung sagt. Das liegt am eval(). Du musst über about:config security.allow_eval_with_system_principal auf true setzen, damit Firefox mit diesem Script nicht mehr abstürzt.
PS: "eval is evil", wie man sagt. Das sollte man sowieso möglichst nie verwenden:
Hallo Sören, danke für den Hinweis. In den Absturzdateien im Ordner crashes des Profilverzeichnisses steht auch als Absturzursache:
Do not use eval with system privileges, gefolgt vom Pfad zum entsprechenden Skript. Daher weiß ich überhaupt, dass Skripte die Ursache waren. Meistens stand dort das Datum-Zeit-Skript, wahrscheinlich, weil es als erstes geladen wurde. Seltsamerweise ist die eval-Funktion dort gar nicht enthalten, übrigens auch im Skript openBookModoki40.uc.js nicht. Dafür im Skript UndoListInTabmenuToo.uc.js, das aber nicht zum Absturz führt.
Nun ja, ich bin ja nicht der Skript-Autor, habe also diese Funktion nicht eingebaut. Bisher gab es ja auch keine Probleme damit.
-
Hallo, an alle Skriptbenutzer,
folgende drei Skripte führen bei mir seit heute mit dem Nightly zum Absturz:
openBookModoki40.uc.js (funktioniert sowieso nicht mehr richtig):
JavaScript
Alles anzeigen// ==UserScript== // @name openbookModokiFor40.uc.js // @namespace https://addons.mozilla.org/firefox/addon/3885 // @description Lesezeichen Bearbeiten Panel: Veränderbare Panelgröße hinzugefügt. Schlüsselwort und Ordner-Struktur // @description Felder sind geschlossen. Weitere Einstellungen: Beschreibung, Ordner, Dieses Lesezeichen in der Sidebar laden, // @description und Schlüsselwort können ein-/ausgeblendet werden. // @include main // @author Alice0775 // @version 2018/03/15 10:30 Fx59 by aborix // @version 2017/11/17 02:30 Fx57 // @version 2016/03/20 02:30 remove tst hack // ==/UserScript== // @version 2015/08/31 02:30 Fx40 // @version 2013/07/07 02:30 fix onFolderMenuListCommand // @version 2012/12/08 22:30 Bug 788290 Bug 788293 Remove E4X // @version 2012/07/24 14:30 Bug 761723 implement toString of function objects by saving source // @version 2010/12/06 10:30 Bug Bug 597557 - Bookmarks & Identity panels should use an Arrowpanel // @version 2010/04/01 00:00 Bug 556342 - Invalid Treeview in bookmark menu via star pane // @version 2009/12/22 00:00 namePicker in front // @version 2009/12/21 14:00 BETTER WORKAROUND FIX Bug 536024 - When i expand folder-tree on Edit This Bookmark, the bookmarked folder is changed. // @version 2009/12/20 16:00 WORKAROUND FIX Bug 536024 - When i expand folder-tree on Edit This Bookmark, the bookmarked folder is changed. // @version 2009/08/11 18:00 Tree Style Tab0.8.2009081101 Unterstützung für das Umbenennen von Objekten // @version 2009/08/07 00:00 Tree Style Tab0.8.2009073102 Treestyletab-Tabzeile ausblenden, wenn vorhanden // @version 2009/08/06 19:00 Tree Style Tab0.8.2009073102 Problem, dass der übergeordnete Tab für einen Moment angezeigt wird, behoben // @version 2009/08/06 18:00 Tree Style Tab 0.8.200907310 entsprechend // @version 2009/06/24 00:00 Firefox3.5 Es wurde ein Fehler behoben, durch den der Offen / Geschlossen Status des Expanders in der // @version 2009/06/24 00:00 Ordnerstruktur und der Tag-Auswahl nicht gespeichert wurde // @version 2009/01/02 02:00 Beschreibung, Position, loadInSidebar, Schlüsselwort und Einstellung anzeigen / ausblenden // @version 2009/01/01 22:28 var openbookResizer = { drag :false, height: null, width : null, eventOffset: null, timer: null, PREHIDEROW : "userChrome.openbook.hideRow", //description, location, loadInSidebar, keyword PREFTREEHEIGHT: "userChrome.openbook.treeHeight", PREFTREEWIDTH : "userChrome.openbook.treeWidth", PREFOPENTREE: "userChrome.openbook.openTree", PREFOPENTAG : "userChrome.openbook.openTag", get tree(){ return gEditItemOverlay._element('folderTree'); }, get getHideRow(){ try { return Services.prefs.getCharPref(this.PREHIDEROW).replace(/\s/g,'').slice(','); } catch(e) { return []; } }, get getPrefTreeHeight(){ try { return Services.prefs.getIntPref(this.PREFTREEHEIGHT); } catch(e) { return 150; } }, get getPrefTreeWidth(){ try { return Services.prefs.getIntPref(this.PREFTREEWIDTH); } catch(e) { return 250; } }, get editBookmarkPanel(){ return document.getElementById('editBookmarkPanel'); }, get treeExpander(){ return gEditItemOverlay._element('foldersExpander'); }, get tagExpander(){ return gEditItemOverlay._element('tagsSelectorExpander'); }, get getPrefOpenTree(){ try { return Services.prefs.getBoolPref(this.PREFOPENTREE); } catch(e) { return false; } }, get getPrefOpenTag(){ try { return Services.prefs.getBoolPref(this.PREFOPENTAG); } catch(e) { return false; } }, get isFx35(){ return parseInt(Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULAppInfo) .version.substr(0,3) * 10, 10) / 10 > 3.0; }, get isFx37(){ parseInt(Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULAppInfo) .version.substr(0,3) * 10, 10) / 10 > 3.6; }, init: function(){ //window.removeEventListener('load', this, false); window.addEventListener('unload', this, false); var style = " \ .openbookResizerGripper { \ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAApklEQVQokY3QK4uCURCA4QeDLCoIXoIYNFiUFVZBq2JQEEx+UcTmpi1b121eosX/a5lg8jvTzsy8M+8cGGKNusQY44QMlRTgAzOcsUqBitH0FVCWpzeNpmZsytUb4oY9qil6BfRxDaiZp1eO5OBl01u9JX7QxiRFr4XfmNbFZ+gdojbCBbt4a6CDP/wH1McDR9SwwB1b+I4bejG1ER8xxwaluHOJ8RM+9xjk9q2RpwAAAABJRU5ErkJggg=='); \ cursor: sw-resize; \ }"; var 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); }; this.folderTreeRow = this.isFx35 ? "folderTreeRow" : "folderTree"; this.tagsSelectorRow = this.isFx35 ? "tagsSelectorRow" : "tagsSelector"; gEditItemOverlay.initPanel_org = gEditItemOverlay.initPanel; gEditItemOverlay.initPanel = function(aInfo) { aInfo.hiddenRows = openbookResizer.getHideRow; gEditItemOverlay.initPanel_org(aInfo); } // selected tree visible func = gEditItemOverlay.toggleFolderTreeVisibility.toString(); func = func.replace( 'var currentFolder = this._getFolderIdFromMenuList();', '' ); func = func.replace( /expander.className = "expander-up";*/, 'var currentFolder = this._getFolderIdFromMenuList(); \ var onselect = this._folderTree.getAttribute("onselect"); \ this._folderTree.removeAttribute("onselect"); \ $&;' ); func = func.replace( 'this._folderTree.focus();', '$&; \ setTimeout(function(tree){ \ var start = new Object(); \ var end = new Object(); \ var numRanges = tree.view.selection.getRangeCount(); \ if (numRanges > 0) { \ tree.view.selection.getRangeAt(0,start,end); \ var v = start.value; \ tree.treeBoxObject.ensureRowIsVisible(v); \ } \ tree.setAttribute("onselect", onselect); \ }, 0, this._folderTree);' ); try{ gEditItemOverlay.toggleFolderTreeVisibility = new Function( func.match(/\((.*)\)\s*\{/)[1], func.replace(/^function\s*.*\s*\(.*\)\s*\{/, '').replace(/}$/, '') ); } catch(ex){} // selected tree visible func = gEditItemOverlay.onFolderMenuListCommand.toString(); func = func.replace( 'this._folderTree.selectItems([container]);', '{var onselect = this._folderTree.getAttribute("onselect"); \ this._folderTree.removeAttribute("onselect"); \ $&; \ setTimeout(function(tree){ \ var start = new Object(); \ var end = new Object(); \ var numRanges = tree.view.selection.getRangeCount(); \ if (numRanges > 0) { \ tree.view.selection.getRangeAt(0,start,end); \ var v = start.value; \ tree.treeBoxObject.ensureRowIsVisible(v); \ } \ tree.setAttribute("onselect", onselect); \ }, 0, this._folderTree);}' ); try{ gEditItemOverlay.onFolderMenuListCommand = new Function( func.match(/\((.*)\)\s*\{/)[1], func.replace(/^function\s*.*\s*\(.*\)\s*\{/, '').replace(/}$/, '') ); } catch(ex){} this.editBookmarkPanel.addEventListener('popupshowing', this, false); this.editBookmarkPanel.addEventListener('popupshown', this, false); this.editBookmarkPanel.addEventListener('popuphiding', this, false); }, uninit: function(){ window.removeEventListener('unload', this, false); this.editBookmarkPanel.removeEventListener('popupshowing', this, false); this.editBookmarkPanel.removeEventListener('popupshown', this, false); this.editBookmarkPanel.removeEventListener('popuphiding', this, false); }, handleEvent: function(event){ switch(event.type){ case 'unload': this.uninit(); break; case 'popupshowing': this.popupshowing(event); break; case 'popupshown': this.popupshown(event); break; case 'popuphiding': this.popuphiding(event); } }, popuphiding: function(event){ if (this.editBookmarkPanel != event.originalTarget) return; var state = !gEditItemOverlay._element(this.folderTreeRow).collapsed; Services.prefs.setBoolPref(this.PREFOPENTREE, state); var state = !gEditItemOverlay._element(this.tagsSelectorRow).collapsed; Services.prefs.setBoolPref(this.PREFOPENTAG, state); gEditItemOverlay._element(this.folderTreeRow).collapsed = true; gEditItemOverlay._element(this.tagsSelectorRow).collapsed = true; /* // xxx Bug 556342 - Invalid Treeview in bookmark menu via star pane var tree = document.getElementById("editBMPanel_folderTree"); if (!this.isFx37) var result = tree.getResult(); if (result) { result.root.containerOpen = false; } tree.view = null; // xxx } */ }, popupshowing: function(event){ if (this.editBookmarkPanel != event.originalTarget) return; this.tree.height = this.getPrefTreeHeight; //this.tree.width = this.getPrefTreeWidth; //this.editBookmarkPanel.width = this.getPrefTreeWidth; if (!document.getElementById("openbookResizerbottomBox")) { var panel = document.getElementById("editBookmarkPanel"); var innerarrow = document.getAnonymousElementByAttribute(panel, "class", "panel-inner-arrowcontent"); if (innerarrow) innerarrow.setAttribute('flex', 1); var box = document.createXULElement("hbox"); box.setAttribute('id', 'openbookResizerbottomBox'); box.setAttribute('align',"start"); var resizer = document.createXULElement("image"); resizer.setAttribute("class", "openbookResizerGripper"); resizer.setAttribute('onmousedown', 'openbookResizer.mousedown(event)'); box.appendChild(resizer); panel.appendChild(box); panel.setAttribute('onmousemove', 'openbookResizer.mousemove(event)'); panel.setAttribute('onmouseup', 'openbookResizer.mouseup(event)'); } }, popupshown: function(event){ if (this.editBookmarkPanel != event.originalTarget) return; setTimeout(function(self) { if (self.getPrefOpenTree && gEditItemOverlay._element(self.folderTreeRow).collapsed ) { gEditItemOverlay.toggleFolderTreeVisibility(); } if (self.getPrefOpenTag && gEditItemOverlay._element(self.tagsSelectorRow).collapsed ) { gEditItemOverlay.toggleTagsSelector(); } try { gEditItemOverlay._element(Services.prefs .getCharPref("browser.bookmarks.editDialog.firstEditField")).focus(); } catch(e) {} }, 100, this); }, mousedown: function(event){ this.drag = true; this.height = parseInt(this.tree.boxObject.height); this.width = parseInt(this.editBookmarkPanel.boxObject.width); this.eventOffset = event; }, mousemove: function(event) { if (this.timer) clearTimeout(this.timer); this.timer = setTimeout(function(event, self){ if (self.drag) { // make sure height [150,screen-300] and width is [300,screen-50] var newValue; newValue = self.height + event.pageY - self.eventOffset.pageY; if (newValue <= screen.height - 300 && newValue >= 150) { self.tree.height = newValue; } newValue = self.width - event.pageX + self.eventOffset.pageX; if (newValue <= screen.width - 50 && newValue >= 300) { //self.tree.width = newValue; self.editBookmarkPanel.width = newValue; } } }, 10, event, this); }, mouseup: function(event) { if (this.drag) { Services.prefs.setIntPref(this.PREFTREEHEIGHT, this.tree.height); Services.prefs.setIntPref(this.PREFTREEWIDTH, this.editBookmarkPanel.boxObject.width); } this.drag = false; } } //window.addEventListener("load", openbookResizer, false); openbookResizer.init();
Weiterhin das Datum-Zeit-Skript für die Titelleiste - das für die Menüleiste funktioniert ohne Probleme:
JavaScript
Alles anzeigen/* :::::::: Anzeige Dokument / WoTag/ Dat / Uhrzeit ::::::::::::::: */ /*-------------------------------------------------------- Anzeige erfolgt deutsch und mit fuehrenden Nullen bei Datum, Stunden und Minuten --------------------------------------------------------*/ String.prototype.repeat = function(times) { /* Hilfsfunktion, um Zeichenfolge xfach zu wiederholen (s. Zeile 26)*/ return (new Array(times + 1)).join(this); } function doDatUhr() { var days = ["Njedźela", "Póndźela", "Wutora", "Srjeda", "Štwórtk", "Pjatk", "Sobota"]; var months = ["januara", "februara", "měrca", "apryla", "meje", "junija", "julija", "awgusta", "septembra", "oktobra", "nowembra", "decembra"]; window.setTimeout("try{doDatUhr()}catch(ex){}", 400 ); var D = new Date(); var day = days[D.getDay()]; var month = months[D.getMonth()]; var year = D.getFullYear(); var hour = D.getHours(); var minute = D.getMinutes(); var second = D.getSeconds(); var date = day + ", " + (D.getDate() < 10 ? "0" +D.getDate() : D.getDate()) + ". " + month + " " + year; var time = (hour < 10 ? "0" +hour : hour) + ":" + (minute < 10 ? "0" +minute : minute) + ":" + (second < 10 ? "0" +second : second); var timestr = "\u00A0".repeat(57)+">>>> " + date + ", " + time+ " hodź. <<<<"; document.title = timestr; } doDatUhr(); /* :::::::: END Anzeige Dokument / WoTag/ Dat / Uhrzeit ::::::::::::::: */
Und schließlich folgendes Skript, das den Ordner Lesezeichen-Menü statt den Ordner Weitere Lesezeichen als Standardordner für die Abspeicherung von Lesezeichen einstellt:
-
Morgen ist auch noch ein Tag.
Wohl wahr.
-
Ja in der CSS Datei hatte ich das so auch drin, ich möchte aber das selbe Icon auch im TAB eingeblendet haben und das geht scheinbar nur wenn das Icon direkt in den Eigenschaften eingetragen wird.
Es müsste aber auch aus der CSS-Datei in den Tab zu zaubern sein. Ich habe nur noch nicht den richtigen Selektor gefunden. Ich dachte an so etwas wie: