Beiträge von Mira_Belle
-
-
Und wieder einmal ein Danke!
Ich nutze jetzt eine Mischung aus beidem.
JavaScriptlet ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome')); let buttonicon = "bookmark-hollow.svg"; style: "list-style-image: url('" + ProfilePath + "/icons/" + buttonicon + "');"Das mit dem Profilpfad fand ich schon cool,
nur die Sache mit dem IconPath gefiel mir nicht!
Deshalb die Mischung.
So habe ich den Profilpfad und das Symbol getrennt!
Gäbe es denn die Möglichkeit, den Profilpfad auf "chrome" und einen Ordner darunter zu verknüpfen?
Denn ...
JavaScriptlet ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome/icon'));... funktionierte bei mir nicht.
Und ...
extra noch anzulegen, nur um dann ...
... daraus zu machen, macht m.M. auch nicht wirklich Sinn, finde ich.
Sieht halt vielleicht schöner aus.
-
-

Was habe ich denn durch das ganze gewonnen?
Ich nutze :
JavaScriptlet currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let buttonicon = "test.png" // Name & Dateiendung des anzuzeigenden Symbols style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',Und "/chrome/icons/" könnte ich auch noch in eine Variable packen,
nur wofür das ganze oben?
OK, da in meiner userChromeShadow.uc.js die Variable let path = PathUtils.join(PathUtils.profileDir, 'chrome', 'userChromeShadow.css'); angelegt ist,
könnte ich auch die Variable let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome'));
zum chrome-Ordner nutzen.
Dann würde wohl sich der Code so ändern
JavaScriptlet ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome')); let buttonicon = "test.png"; style: "list-style-image: url('" + ProfilePath + "/icons/" + buttonicon) +"');"Aber habe ich dadurch irgendwas gewonnen?

Und wenn ich jetzt noch aus "/icons/" + buttonicon => IconPath mache, ...
OK, ist etwas kürzerer Code.
So habe ich mir wohl selbst die Antwort erarbeitet,
und das zu so später Stunde.
-
Danke Sören.
Wieder etwas gelernt, so hoffe ich.

1.) Die Prüfung auf browser.xul werde ich so dann in all meinen Scripten entfernen.
Erledigt.2.) Und das mit den Variablen dann auch gleich umsetzen.
Auch erledigt. -
Also ich glaube, Ihr wollt mir verklickern, dass mein Ansatz die Variablen vor die Funktion zu stellen,
nicht so prickelnd war.
Ist es denn dann besser den Code so:
JavaScript
Alles anzeigen// Navbar.us.js (function nbbut() { let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; try { ...oder so:
JavaScript
Alles anzeigen// Navbar.us.js (function nbbut() { if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); try { ...... zu schreiben?
-
Ich zitiere mich mal selber.

Und glaube mir, wenn Du erst einmal "Blut" geleckt hast, willst Du noch viel mehr
anpassen.Deshalb.
Und genau so hat es bei mir im Juni 2021 auch angefangen,
und was war das für eine Heidenarbeit, den ganzen Kram auseinander zu puzzeln.
Also lieber gleich von Anfang an Struktur.
-
Danke für Deine Mühe mir es zu erklären, aber ich verstehe nur Bahnhof!
Sollten die Variablen nun so wie im ersten Beispiel vor der Funktion stehen,
oder eher in der Funktion?
Wenn ich Dich richtig verstanden habe, dann wohl eher in der Funktion, oder?
Und wie ich dann vermute, ist es so, wie ich oben schon schrieb, beide Scripte kommen sich mit ihren Variablen ins Gehege.
Z.b.
JavaScript
Alles anzeigen// Button_PersonalToolbar.uc.js let startHeight = '0px'; ... let visible = '24px'; ... let buttonicon = "bookmark-hollow.svg" // Navbar.us.js let startHeight = '24px'; ... let visible = '32px'; ... let buttonicon = "refresh_ie8.png"Das wären dann gleich drei Stolpersteine, richtig?
Denn wenn ich mir überlege beide Scripte in eine Datei zuschreiben, ...
Das kann ja dann nicht gut gehen.
-
OK.
So funktioniert das Script.
JavaScript
Alles anzeigen// Navbar.us.js (function nbbut() { let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'nav-bar-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'nav-bar-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: true, label: 'Toggle', tooltiptext: 'NavBar on/off', style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/image/" + buttonicon) +'");', }; for(var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); CustomizableUI.registerToolbarNode(tb); } catch(e) { }; //----------BEGINN---------------------- // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben) // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event document.addEventListener('keydown', (event) => { let keyName = event.key; // Funktion wird ausgeführt, wenn "AltGr & w gedrückt werden if (event.altKey && keyName == 'w') { onClick(); } }, false ); //----------ENDE------------------------ document.getElementById('nav-bar').style.minHeight = '0'; document.getElementById('nav-bar').style.transition = 'all 0.3s steps(6, end)'; if( startHeight === visible || startHeight === collapse ) { document.getElementById('nav-bar').style.height = startHeight; } else { document.getElementById('nav-bar').style.height = visible; } document.getElementById('nav-bar-button').addEventListener( "click", onClick ); function onClick(aEvent) { if (persNavbar.style.height == '') { persNavbar.style.height = collapse; } else if (persNavbar.style.height == visible) { persNavbar.style.height = collapse; } else if(persNavbar.style.height == collapse) { persNavbar.style.height = visible; if(!intervalID && autoCloseTime) { intervalID = aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); } } } function autoClose() { if( intervalID ) { if( persNavbar.style.height == visible) { persNavbar.style.height = collapse; clearInterval(intervalID); intervalID=0; } } } })();Und so dann nicht mehr!
JavaScript
Alles anzeigen// Navbar.us.js let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); (function nbbut() { if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'nav-bar-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'nav-bar-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: true, label: 'Toggle', tooltiptext: 'NavBar on/off', style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/image/" + buttonicon) +'");', }; for(var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); CustomizableUI.registerToolbarNode(tb); } catch(e) { }; //----------BEGINN---------------------- // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben) // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event document.addEventListener('keydown', (event) => { let keyName = event.key; // Funktion wird ausgeführt, wenn "AltGr & w gedrückt werden if (event.altKey && keyName == 'w') { onClick(); } }, false ); //----------ENDE------------------------ document.getElementById('nav-bar').style.minHeight = '0'; document.getElementById('nav-bar').style.transition = 'all 0.3s steps(6, end)'; if( startHeight === visible || startHeight === collapse ) { document.getElementById('nav-bar').style.height = startHeight; } else { document.getElementById('nav-bar').style.height = visible; } document.getElementById('nav-bar-button').addEventListener( "click", onClick ); function onClick(aEvent) { if (persNavbar.style.height == '') { persNavbar.style.height = collapse; } else if (persNavbar.style.height == visible) { persNavbar.style.height = collapse; } else if(persNavbar.style.height == collapse) { persNavbar.style.height = visible; if(!intervalID && autoCloseTime) { intervalID = aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); } } } function autoClose() { if( intervalID ) { if( persNavbar.style.height == visible) { persNavbar.style.height = collapse; clearInterval(intervalID); intervalID=0; } } } })(); -
-
Alles anzeigen
Nun gibt es Variablen, die funktionieren nicht, wenn man sie aus der Funktion heraus nimmt und an den Anfang verschiebt,
z.B. let toolbaritem = aDocument.createXULElement('toolbarbutton'); […]
Warum ist das so?Das sollte recht deutlich werden, wenn du deinen Blick nur auf diese Zeile und die darüber wirfst:
JavaScriptonBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton');Du befindest dich in einer Funktion, welcher du den Parameter aDocument übergibst. In der Funktion wendest du
createXULElement() auf eben dieses übergebene Element an. Wohin möchtest du die Zeile also verschieben? Außerhalb dieser Funktion existiert aDocument doch gar nicht.
aber auch let props = ... kann man nicht "rausnehmen".
Funktioniert bei mir. Da du dort allerdings auf currentProfileDirectory zugreifst, darf das natürlich auch erst nach dessen Definition folgen.
Ob das wirklich etwas für die Übersichtlichkeit macht, sei mal hingestellt. Zum einen ist das für mich etwas Internes, was für die Funktionsweise des Scripts benötigt wird, und nicht wirklich der Konfiguration des Scripts dient. Da würde ich verstehen, wieso man das am Anfang haben will. Zum anderen nimmst du damit auseinander, was logisch zusammengehört. Denn du kannst weder den Code darüber noch den darunter, der genau das nutzt, verschieben.
Danke für Deine Erklärungen.
Ich hatte mir in etwa so etwas schon gedacht, dass es da Abhängigkeiten gibt.
Nur mangels Wissen was JavaScript betrifft mir nicht genau erkären können.
Jetzt weiß ich es. Danke.

Noch konfuser macht mich ein anders Script!
Da kann ich gar keine Variable an den Anfang verschieben und aus der Fuktion nehmen.
Bitte präzisiere, was genau du verschieben möchtest. Die Erklärung dürfte ansonsten vermutlich eh die gleiche wie beim ersten Script sein.
Nun, die Funktion steht in diesem Script gleich zu Anfang!
Zeile 2 (function nbbut() {
Wenn ich diese ((function nbbut() {) aber wie im anderen Script erst in Zeile 11 aufrufe, funktioniert das ganze Script nicht mehr!
Vergleiche:
JavaScript
Alles anzeigen// Navbar.us.js (function nbbut() { let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar');So funktioniert das Script!
Und so ...
JavaScript
Alles anzeigen// Navbar.us.js let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); (function nbbut() { ...... nicht mehr!

Aber es ist doch genau so aufgebaut wie das Script Button_PersonalToolbar.uc.js
welches ja genauso einwandfrei funktioniert!
Wobei ich anmerken muss, dass das Javascript Button_PersonalToolbar.uc.js zum Testzeitpunkt
auch aktiv war.
Könnte es also sein, dass sich beide Scripts ins Gehege kommen?
-
Ich habe so ein Problem mit einem Script.
Normalerweise schreibe ich die Variablen ganz an den Anfang,
das ist m.M. übersichtlicher und funktioniert auch meist.
Hier ein Beispiel:
JavaScript
Alles anzeigen// Button_PersonalToolbar.uc.js let startHeight = '0px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '24px'; // Leiste sichtbar let buttonicon = "bookmark-hollow.svg" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persToolbar = document.getElementById('PersonalToolbar'); (function ptbut() { if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'PersonalToolbar-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'PersonalToolbar-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: true, label: 'Toggle', tooltiptext: 'Lesezeichenleiste ein-/ausblenden', style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");', }; for(var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); CustomizableUI.registerToolbarNode(tb); } catch(e) { }; //----------BEGINN---------------------- // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben) // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event document.addEventListener('keydown', (event) => { let keyName = event.key; // Funktion wird ausgeführt, wenn "AltGr & q gedrückt werden if (event.altKey && keyName == 'q') { onClick(); } }, false ); //----------ENDE------------------------ // Anmerkungen und beispiele am Ende des Scriptes document.getElementById('PersonalToolbar').style.minHeight = '0'; document.getElementById('PersonalToolbar').style.transition = 'all 0.3s steps(6, end)'; if( startHeight === visible || startHeight === collapse ) { document.getElementById('PersonalToolbar').style.height = startHeight; } else { document.getElementById('PersonalToolbar').style.height = visible; } document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick ); function onClick(aEvent) { if (persToolbar.style.height == '') { persToolbar.style.height = collapse; } else if (persToolbar.style.height == visible) { persToolbar.style.height = collapse; } else if(persToolbar.style.height == collapse) { persToolbar.style.height = visible; if(!intervalID && autoCloseTime) { intervalID = aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); } } } function autoClose() { if( intervalID ) { if( persToolbar.style.height == visible) { persToolbar.style.height = collapse; clearInterval(intervalID); intervalID=0; } } } })();Nun gibt es Variablen, die funktionieren nicht, wenn man sie aus der Funktion heraus nimmt und an den Anfang verschiebt,
z.B. let toolbaritem = aDocument.createXULElement('toolbarbutton');,
aber auch let props = ... kann man nicht "rausnehmen".
Warum ist das so?
Noch konfuser macht mich ein anders Script!
Da kann ich gar keine Variable an den Anfang verschieben und aus der Fuktion nehmen.
Dieses:
JavaScript
Alles anzeigen// Navbar.us.js (function nbbut() { let startHeight = '24px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec let collapse = '0px'; // Leiste nicht sichtbar let visible = '32px'; // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand) let buttonicon = "refresh_ie8.png" // Name & Dateiendung des anzuzeigenden Symbols let intervalID = 0; let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner let persNavbar = document.getElementById('nav-bar'); if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'nav-bar-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'nav-bar-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: true, label: 'Toggle', tooltiptext: 'NavBar on/off', style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/image/" + buttonicon) +'");', }; for(var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); CustomizableUI.registerToolbarNode(tb); } catch(e) { }; //----------BEGINN---------------------- // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben) // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event document.addEventListener('keydown', (event) => { let keyName = event.key; // Funktion wird ausgeführt, wenn "AltGr & w gedrückt werden if (event.altKey && keyName == 'w') { onClick(); } }, false ); //----------ENDE------------------------ document.getElementById('nav-bar').style.minHeight = '0'; document.getElementById('nav-bar').style.transition = 'all 0.3s steps(6, end)'; if( startHeight === visible || startHeight === collapse ) { document.getElementById('nav-bar').style.height = startHeight; } else { document.getElementById('nav-bar').style.height = visible; } document.getElementById('nav-bar-button').addEventListener( "click", onClick ); function onClick(aEvent) { if (persNavbar.style.height == '') { persNavbar.style.height = collapse; } else if (persNavbar.style.height == visible) { persNavbar.style.height = collapse; } else if(persNavbar.style.height == collapse) { persNavbar.style.height = visible; if(!intervalID && autoCloseTime) { intervalID = aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); } } } function autoClose() { if( intervalID ) { if( persNavbar.style.height == visible) { persNavbar.style.height = collapse; clearInterval(intervalID); intervalID=0; } } } })();Das ist doch nur eine Abwandlung des Skiptes Button_PersonalToolbar.uc.js!
Baue ich es aber genau so auf, bzw. um, funktioniert es nicht mehr!
Warum?
Beißen sich etwa bestimmte Einträge beider Scripts und vertragen sich nicht?
-
Ergänzend würde ich vorschlagen Du lagerst 2002Andreas Code aus!
Dh. Du schreibst in Deine userChrome.css nur Folgendes:
@import url("shadow.css");
Erstellst in Deinem Benutzerprofil unter chrome eine neue Datei eben mit genau diesem Namen
und kopierst 2002Andreas Code da rein, speichern nicht vergessen.
Die shadow.css sollte dann so aussehen:CSS@-moz-document url(chrome://browser/content/browser.xhtml) { #main-menubar > menu { text-shadow: 3px 3px 4px white !important; } .tab-text { text-shadow: 3px 3px 4px white !important; } }OK, Du kannst, Du musst Dir den Schattenwurf, aber auch die Farbe des Schattens noch anpassen.

Spiel etwas mit den Werten herum und Du wirst sehen was passiert.
Denke aber daran, nach jeder Änderung musst Du den Firefox neu starten!
-
Nein, davon wusste ich bis jetzt überhaupt noch nichts.
Na dann einfach mal machen, ist wirklich nicht schwer und langwierig ist es auch nicht.
Sobald Du das erledigt hast, machen wir uns daran, der Schrift in der Menüleiste und in den Tabs
einen Schatten zu verpassen.
Und glaube mir, wenn Du erst einmal "Blut" geleckt hast, willst Du noch viel mehr
anpassen.Bis morgen.
-
Hast Du "Deinen" Firefox schon auf das Verwenden von CSS-Code vorbereitet?
ThemaAnpassungen von Firefox-Oberfläche mittels userChrome.css und Webseiten mittels userContent.css
Neben den eingebauten Browser-Entwicklerwerkzeugen gibt es für Firefox eine weitere Möglichkeit, die Firefox-Oberfläche und die Gestaltung von Webseiten zu verändern. Dies geschieht mit Hilfe der Formatierungssprache CSS (Abkürzung für englisch Cascading Stylesheets) und den beiden Dateien userChrome.css für die Gestaltung der Firefox-Oberfläche und userContent.css für die Gestaltung von Webseiten nach den Wünschen der Firefox-Benutzer.
Bis zur Einführung der Webextensions durch Mozilla war es…
milupo10. Februar 2019 um 13:19 -
Herzlich willkommen und ein gutes neues Jahr!
Oh ha! Nettes Spielzeug.

Welche Schrift soll denn mit Schattenwurf sein, oder besser gefragt, an welchen Stellen sollen "Wörter" einen Schatten haben?
Und so simpel Deine Frage auch erscheint, so simpel wird die Umsetzung nicht sein.
Aber
es ist möglich, und wenn es nicht möglich ist, wird es hier möglich gemacht. 
-
Du meintest dieses Video?
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. -
Egal welches PDF ich auch anklicke, sie wird im Browser geöffnet.
Alles rund um Luftreinigung | ZehnderReferenzen, Produktinfos, Daten und Expertenrat zum Thema Luftverschmutzung am Arbeitsplatz. Jetzt mehr erfahren!www.zehnder-cleanairsolutions.comHeiz- und Kühldecken-Systeme | Zehnder Group Deutschland GmbH
-
-