kannst Du bitte helfen.
Puuuh, leider nein
. Ich habe keine Ahnung, was jetzt wieder nicht läuft und müsste das Skript debuggen. Da komme ich frühestens am Wochenende dazu. Vielleicht hat ja aborix eine Lösung parat? ![]()
kannst Du bitte helfen.
Puuuh, leider nein
. Ich habe keine Ahnung, was jetzt wieder nicht läuft und müsste das Skript debuggen. Da komme ich frühestens am Wochenende dazu. Vielleicht hat ja aborix eine Lösung parat? ![]()
Ziel ist es, den Code so zu gestalten, dass grundlegend alle Funktionen erhalten bleiben,
aber eben bei Rechtsklick mit der Maus nur das Menü aufgeht
und nicht mehr die Lesezeichenleiste ausgelöst wird.
Dann kannst du das z.B. so machen (die geänderten Zeilen habe ich mal markiert) :
(function ptbut() {
if (location.href !== 'chrome://browser/content/browser.xhtml') return;
let startHeight = '0px'; // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
let collapse = '0px'; // Leiste nicht sichtbar
let visible = '24px'; // Leiste sichtbar
let autoCloseTime = 5000; // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec
let intervalID = 0;
let persToolbar = document.getElementById('PersonalToolbar');
try {
CustomizableUI.createWidget({
id: 'PersonalToolbar-button',
type: 'custom',
defaultArea: CustomizableUI.AREA_NAVBAR,
onBuild: function(aDocument) {
let toolbaritem = aDocument.createXULElement('toolbarbutton');
let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
// ^^ Pfadangabe zum Profilordner und gleich in den entsprechenden Unterordner ^^
let buttonicon = "bookmark-hollow.svg"; // Name & Dateiendung des anzuzeigenden Symbols
let props = {
id: 'PersonalToolbar-button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
removable: true,
label: 'Toggle',
tooltiptext: 'Lesezeichenleiste ein-/ausblenden',
style: "list-style-image: url('" + ProfilePath + buttonicon + "');"
};
for(var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} 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;
if (event.altKey && keyName == 'q') { // Funktion wird ausgeführt, wenn "Alt & q gedrückt werden
onClick(event,true); // ----geändert----
}
}, false
);
//----------ENDE------------------------
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, keyEvent=false) // ----geändert----
{
if(!keyEvent && aEvent.button != 0) { // ----geändert----
return;
}
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;
}
}
}
})();
Alles anzeigen
Nochmals herzlichen Dank dafür
Gerne... ![]()
Ich hatte doch geschrieben, dass Mozilla dies anders als Google handhaben will, was ja auch so im CB-Artikel stand:
Allerdings arbeitet Mozilla wohl an einer eigenen, modifizierten Manifest v3-API, welches diese Einschränkungen nicht hat und solange wird dann wohl auch Manifest v2 weiter parallel laufen.
Ist folgender Absatz denn falsch und gibt es was Neues dazu?
[...], zweitens wird diese dann später in Firefox parallel zur WebRequest API und nicht als Ersatz existieren.
Zitat von ComputerBaseAuch die Vorgänger-API WebRequest soll noch so lange erhalten bleiben, bis die Entwickler eine gangbare Lösung in Form einer adäquaten Version von DNR ausgearbeitet haben.
Dort steht ja, dass die WebRequestAPI dann ersetzt wird, wenn man die Funktionalität in die DNR integriert hat, also nicht "ewig" parallel weiter angeboten wird.
Die Fehlinformation seitens ComputerBase beginnt schon damit, dass sie das „Chrome Manifest v3“ nennen. Das heißt einfach nur „Manifest v3“,
Na ja, es wird ja auch im Artikel deutlich gemacht, dass Mozilla eigene Wege geht, von daher halte ich das für verzeihlich.
Mag sein, dass hier nicht deutlich genug zwischen den unterschiedlichen Ansätzen von Google und Mozilla getrennt wurde und auch die Bemühungen Mozillas bezüglich der Einschränkungen bei AdBlockern nicht hervorgehoben wurden, aber als fehlerhaft würde ich den Artikel nicht beschreiben. Ich sah die allgemeinen Einlassungen in dem Artikel über das „Chrome Manifest v3“ und den damit verbundenen Vorbehalten, eher als Grundlageninformation und Ausgangspunkt, um dann auf Mozillas Herangehensweise (zugegebenermaßen kurz) einzugehen, wobei ich nicht weiß, welche konkreten Pläne es dazu schon bei Mozilla gibt, weil ich mich nicht tagtäglich damit beschäftige...
Was ich gerne möchte, dass die Datei nur per Linksklick aufgerufen wird, und beim Rechtsklick ganz normal das Standard Kontextmenü.
Hallo 2002Andreas ,
Folgende Änderungen müssten durchgeführt werden:
(Bitte beachten: Der OnClick-Funktion muss der Parameter 'event' übergeben werden, also:
Skript mit der Änderung:
// ruft die Datei Test.uc.js direkt auf
(function() {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id: "Scriptbutton",
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Openscriptbutton",
tooltiptext: "Test.uc.js",
onClick: function(event) {
if (event.button != 0){
return;
}
var dir = Services.dirsvc.get('UChrm', Ci.nsIFile);
dir.append('Test.uc.js');
// dir.append('Test.css');
dir.launch();
},
onCreated: function(aNode) {
aNode.style.listStyleImage = 'url( data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAATCAYAAABlcqYFAAACLklEQVQ4ja3Q70sTcQDH8XuymQtlUhAsiKhgCCGYimzQHyCDsnTTNlxLMawYJKxlzA06OdejKGZcN1qr0WEaEym3Vhar+WNPoodBT8o9atKwX6wf3rpPT0zcfb8nUvvC69Hd5/vmjmEUx8wtWEzcYsrEZfPm0Sy2ysRl8yZuMWXmFizKO8tOKzsXbB2Zx39j54LUQFMgY2m5nEGlNAUy5Bc1+tPJQ4E0KqXRn04SkQbf7HKD7xkqZ3aZiBy89BRqDg89wOfiKoq/Svj2Q1oHAMd9EdUdEan3PoYaW+A2aCc0kYLRPaG6IyJGTwJq7r9MEYHCpxXU999Q3Rg9CTKyf/AhaPadHUfuw0dF4ifaPCPU9zciInvd06BpGeRR+i2XJb4U30GITyH1KofX71cwfOsJdUtE9pyLg+bYRX7t6u8ASsRvW5XeoN07St0SEcPAJGiMjiB6hnhcEz2Q5UJZ4G0uCeMplrozDEySkV3949jMafZqWUAQH8Fgv77phojs7BOhqjeGqeeJtd9TwBnODf2JMezovae+6RPJiN4Vy9e5YqDZ7bgCqfQVgIyu4QvQn7y7Tm2jd8XyRKTGGZ2pdd4BTfwFi+mkgANH/KjtiVLfUapxRmeISHV32KyzR+Ttjgg20lnHcPR8G+raA1A+U6OzR+Tq7rCZiDAMw2htgrfKJkjbusL4V1U2QdLaBC818PdoOkLNGisvajv5Ja31Jrask1/SWHlR0xFqVt75B87drLq2rxO6AAAAAElFTkSuQmCC)';
return aNode;
}
});
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Warum verlinkst du dazu nicht auf unsere Seite
Ich finde den Computerbase-Artikel in Bezug auf Manifest-v3-Erweiterungen einigermaßen informativ und finde zusätzliche Informationen zu dem Thema können nicht schaden. Vor allem der Hinweis, dass das "Chrome Extension Manifest v3" durchaus umstritten ist, da es jetzt noch vorhandene Möglichkeiten in der entfernten 'WebRequest-API' beschneidet und durch die neue "Declarative Net Request API" ersetzt, welche z.B. die Anzahl der Regeln auf 30.000 (geplant 150.000?) kürzt, wobei aktuell bei Ad-Blockern wesentlich mehr genutzt werden. Auch das Erstellen, Pflegen und tägliche Updaten der Filterlisten wird erschwert. Es gibt noch mehr Kritikpunkte, wobei man sagen muss, dass der Schutz der Privatsphäre, besserer Schutz vor Malware und eine verbesserte Performance natürlich positiv zu bewerten sind. Wie stark sich die Einschränkungen in der Praxis auswirken werden und gegebenenfalls umgehen lassen, wird man sehen...
Allerdings arbeitet Mozilla wohl an einer eigenen, modifizierten Manifest v3-API, welches diese Einschränkungen nicht hat und solange wird dann wohl auch Manifest v2 weiter parallel laufen.
Was mich nur wundert, selbst die Tastenkombination ALT + Pfeil links/rechts geht ja nicht.
Stimmt. Das ist merkwürdig. Das sollte natürlich unabhänging von der Logitech-Software bzw. überhaupt der Maus sein... ![]()
Vielleicht auch mal in der Browser-Konsole ('Weitere Werkzeuge' -> 'Browser-Konsole') nachschauen, ob irgendwelche Fehlermeldungen diesbezüglich ausgegeben werden.
Was auch sehr merkwürdig ist, dass das Fehlverhalten zeitweise nicht aufgetreten ist, was eher für ein prinzipielles Hard-/Software-Problem sprechen würde. Ich würde in Edge oder Chrome einmal längere Zeit testen, ob sich da das Problem nicht auch dort irgendwann zeigt...
Möglich auch, dass die ALT-Taste einen Schaden hat und diese Kombination durch Firefox oder Treiber dazu genutzt wird, um die Vor-/Zurück-Funktionalität intern aufzurufen...
Unter 'about:config' -> 'mousebutton':
Stehen beide Werte auf 'true'?
Wurde eigentlich schon einmal ohne spezielle Logitech-Treiber und Zusatzsoftware getestet? Also alles, was mit der Logitech-Maus zu tun hat, deinstallieren, Rechner neu starten und dann am besten im Firefox-Fehlerbehebungsmodus wieder testen. Funktioniert es dann, hätte man zumindest mal den Verursacher identifiziert. Die Daumen-Tasten werden ja auch ohne spezielle Treiber/Software standardmäßig von Windows unterstützt...
Ich würde, um sicher zu gehen, in jedes Script ein console.log('name des scripts') einbauen und prüfen, ob das für irgendein Script mehrfach geloggt wird. Wenn nicht, scheint mir alles gut zu sein.
Das mehrfache Laden eines Skripts passiert auch mit dem Standard-Aufruf (meist 2x).
Deshalb sollte in jedem Skript auch ganz am Anfang so was wie:
if (location != 'chrome://browser/content/browser.xhtml') return;
oder
if (!window.gBrowser){ return; }
stehen, was bei mehrfachem Aufruf das Skript beendet...
Den genauen Grund weiß ich nicht. Hatte mal gedacht, es hängt mit der Anzahl der Fenster zusammen, aber auch bei nur einem Fenster wird das Skript mehrfach aufgerufen. Vielleicht weiß ja aborix mehr darüber, der hat ja, soweit ich weiß, am Loader mitgearbeitet... ![]()
Magst Du das zur Verfügung stellen?
Klar, kann ich machen. Im Gegensatz zu den "aufgeräumten Usern" hier, herrscht bei mir in der userChrome.css aber ein heilloses, unkommentiertes Messi-Chaos und ich weiß nicht ob du viel mit dem Schnipsel anfangen kannst, da auch die Selektoren sehr auf meine Bedürfnisse zugeschnitten sind. Die meisten :not([...])-Sachen, kannst du bei dir wahrscheinlich wegschmeißen.
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"])
{
margin: 2px 3px 3px!important;
min-height: 30px !important;
max-height: 30px !important;
min-width: 30px !important;
max-width: 30px !important;
border-radius: 50% !important;
background-position: center !important;
background: linear-gradient(155deg, rgba(0,0,0,.5), rgba(164,164,164,.5) );
box-shadow: -1px -1px 2px rgba(255,255,255,.25), 2px 2px 2px rgba(34,34,34,0.5);
filter: contrast(110%) brightness(90%) !important;
transition: filter 0.33s, box-shadow 0.33s !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):hover:not([disabled="true"])
{
filter: contrast(120%) brightness(100%) !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):hover:not([disabled="true"]):active:not([disabled="true"])
{
border-radius: 50% !important;
background: linear-gradient(145deg, rgba(0,0,0,.5), rgba(48,48,48,.5), rgba(108,108,108,0.5) ) !important;
box-shadow: 0px 0px 1px rgba(255,255,255,.25) !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]) .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]) .toolbarbutton-badge-stack
{
background: transparent !important;
fill: rgba(220,220,220,1) !important;
filter: drop-shadow( 1px 1px 1px rgba(25,25,25,.75)) !important;
transition: fill 0.33s, filter 0.33s, transform .33s !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):not([open]):hover:not([disabled="true"]) .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):not([open]):hover:not([disabled="true"]) .toolbarbutton-badge-stack
{
fill: rgba(255,255,255,1) !important;
filter: drop-shadow( 1px 1px 1px rgba(25,25,25,1.00)) drop-shadow( -1px -1px 3px rgba(200,200,200, 0.5)) brightness(160%) !important;
transition: fill 0.33s, filter 0.33s, transform .33s !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):hover:not([disabled="true"]):active:not([disabled="true"]) .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"]):hover:not([disabled="true"]):active:not([disabled="true"]) .toolbarbutton-badge-stack
{
fill: rgba(0,207,229,1) !important;
filter: drop-shadow( 1px 1px 1px rgba(25,25,25,.75)) drop-shadow( -1px -1px 3px rgba(0,207,229,1)) brightness(160%) !important;
transform: translate(0px,1px) !important;
}
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"])[open] .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([id$="-ucjs"]):not([class*="webextension-browser-action"]):not([class*="combined"]):not([id="PanelUI-menu-button"]):not([id="nav-bar-overflow-button"])[open] .toolbarbutton-badge-stack
{
fill: rgba(0,207,229,1) !important;
filter: drop-shadow( 1px 1px 1px rgba(25,25,25,.75)) drop-shadow( -1px -1px 3px rgba(0,207,229,1)) brightness(160%) !important;
transform: translate(0px,0px) !important;
}
Alles anzeigen
Hallo clio, freut mich, wenn dir das gefällt
, aber ich nutze kein Extra-Theme und die Icons auf dem Screenshot sind 1:1 die unveränderten original Firefox-Icons. Ich habe nur einen (animierten) runden CSS-Button darum gebastelt und auch alles andere (z.B. Hintergrund etc.) ist CSS-Handarbeit... ![]()
Hmm, jetzt wo Du's sagst - im Lesezeichenmenü scheint es tatsächlich Lesezeichen geben zu können, nicht nur Lesezeichen Menüs .
Du musst nur die einzelnen Lesezeichen auf die höchste Ebene, unter 'Lesezeichen-Menü' eintragen/verschieben/kopieren:
Peinlich, sorry.
Von wegen "peinlich" ! Jetzt muss ich dich aber zitieren: "Alles ist gut!".
![]()
Du wolltest Horstmann helfen und außerdem kann man ja vielleicht vom Ansatz her wirklich was aus dem Skript machen
.
Ich bin aber immer noch der Meinung, dass die Anpassung (per CSS?) des 'Lesezeichen-Menü-Button'-Popups, der einfachere Weg ist...
Ich habe mal den Menüeintrag aus Lesezeichen > Weitere Lesezeichen verschiebbar gemacht.
Die Anzeige funktioniert einwandfrei , aber bei mir öffnet er das Lesezeichen bei Links-Klick mit der Maus nicht. Nur wenn ich über das Kontext-Menü gehe, kann ich es öffnen. Ist das bei dir auch so? Ich denke, die größte Schwierigkeit wird sein, das Menü wirklich als Drag&Drop-Ziel zu definieren. So wie es aussieht, verhält es sich ja wie ein 'normales' Menü. Ich wüsste nicht wie das geht, aber vielleicht weiß ja jemand eine einfache Lösung dafür...
?
Ein einzelner, voll funtionsfähiger Lesezeichenordner in der nav-bar, oder sonstwo, benutzbar als verschiebbarer toolbar Button , das wäre ein Träumchen .
So ganz verstehe ich die Diskussion allerdings nicht. Diesen verschiebbaren Button gibt es doch schon standardmäßig im Firefox?!. Nennt sich "Lesezeichen-Menü" und macht doch genau das, was du haben möchtest...
(Die nicht benötigten Einträge/Ordner kann man ja sicherlich mit CSS oder UserSkript entfernen).
ich suche eine Möglichkeit, den Mittelklick in den leeren Bereich der Tab-Leiste zu deaktivieren
Bitte mal testen:
//NoMiddleClickOnTabBar.uc.js
(function() {
if (!window.gBrowser){
return;
}
gBrowser.tabContainer.addEventListener('click', function(event) {
if (event.button == 1) {
if(event.target.parentNode.id == "tabbrowser-tabs") {
event.preventDefault();
event.stopPropagation();
return;
}
}
}, true);
})();
Alles anzeigen
das die "Anzeige" flexibel positionierbar wird/ist.
So in etwa stelle ich es mir vor.
Das kann ich noch anbieten: rechtsbündig in der Menüleiste mit und ohne Titelleiste.
// DateandClock.us.js
// Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
(function() {
if (!window.gBrowser){
return;
}
function doDatClock() {
let date = new Date();
var timestr = date.toLocaleDateString( locale, { weekday: "long", year: "numeric", month: "long", day: "numeric"} ) +
' - ' + date.toLocaleTimeString( locale, { hour: '2-digit', minute: '2-digit', second: '2-digit' } ) +
' Uhr';
if( count == 1 ) {
var counter = new Date( 2000 * sec ).toISOString().substr( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
timestr = timestr + ' (' + counter + ')';
sec++;
}
ClockLabel.setAttribute( 'value', timestr );
}
var count = 0; // if you don't want a counter set this to zero
var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
var cssFontFamily = 'Arial';
var cssColor = '#FFBD4F'; // Font Color
var css = 'padding-top: 5px !important; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:400; font-size:16px; text-shadow: none;';
var sec = 0;
var locale = language || window.navigator.languages[0];
let position = document.querySelector("toolbar#toolbar-menubar spacer");
position.style.MozBoxOrdinalGroup = "1";
var ClockLabel = document.createXULElement('label');
ClockLabel.setAttribute('id', 'titlebar-clock-display');
ClockLabel.setAttribute('class', 'titlebarpanel-text');
ClockLabel.setAttribute('style', css);
ClockLabel.style.MozBoxOrdinalGroup = "1000";
position.parentNode.insertBefore(ClockLabel, position.nextSibling );
if( count == 1 ) {
ClockLabel.addEventListener('dblclick', function() { sec = 0; });
}
window.setInterval( doDatClock , 1000 );
})();
Alles anzeigen
Für "Flexibel positionierbar" müsste man das Anzeige-Element anders erzeugen bzw. eine andere Klasse verwenden.
Oder zumindest sich rechts am Rand der Menübar ausrichten,damit die Anzeige auch rechts sich positionieren lässt.
Damit die Anzeige rechtsbündig ist, muss das Label an den Titelbar-Icons (min/max/close) ausgerichtet werden.
Das replace von visoer ist sicher eine gute und praktikable Lösung, da die Funktion aber jede Sekunde aufgerufen wird, sollte man vielleicht die Datums und Zeitanzeige getrennt aufrufen und dann einfach den String zusammenführen. So wird dieses selten dämliche 'um' bzw. 'at' erst gar nicht erzeugt und man muss es nicht entfernen. Keine Ahnung was das soll, in Firefox 91esr war das auf jeden Fall noch nicht drin... ![]()
// DateandClock.us.js
// Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
(function() {
if (!window.gBrowser){
return;
}
function doDatClock() {
date = new Date();
var timestr = date.toLocaleDateString( locale, { weekday: "long", year: "numeric", month: "long", day: "numeric"} ) +
' - ' + date.toLocaleTimeString( locale, { hour: '2-digit', minute: '2-digit', second: '2-digit' } ) +
' Uhr';
if( count == 1 ) {
var counter = new Date( 2000 * sec ).toISOString().substr( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
timestr = timestr + ' (' + counter + ')';
sec++;
}
ClockLabel.setAttribute( 'value', timestr );
}
var count = 0; // if you don't want a counter set this to zero
var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
var cssFontFamily = 'Arial';
var cssColor = '#FFBD4F'; // Font Color
var css = 'padding-top: 5px !important; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:200; font-size:16px; text-shadow: none;';
var sec = 0;
var locale = language || window.navigator.languages[0];
var position = document.getElementsByClassName('titlebar-button titlebar-min')[0];
var ClockLabel = document.createXULElement('label');
ClockLabel.setAttribute('id', 'titlebar-clock-display');
ClockLabel.setAttribute('class', 'titlebarpanel-text');
ClockLabel.setAttribute('style', css);
position.parentNode.insertBefore(ClockLabel, position );
if( count == 1 ) {
ClockLabel.addEventListener('dblclick', function() { sec = 0; });
}
window.setInterval( doDatClock , 1000 );
})();
Alles anzeigen
Ohne CSS macht es nix; ist so gewollt v.a. für einige andere Experimente mit vertikalen Toolbars etc., wo dann noch mehrere andere selbstdefinierte .class Attribute zusätzlich verwendet werden .
Ok, alles klar! ![]()
Edit: Leider zu früh gefreut - mit der Änderung im Code funktioniert das Tastaturkürzel nicht mehr , nur noch der Button .
Abgesehen davon, dass bei mir dein Script überhaupt nicht funktioniert, kannst du das mal testen:
//Toggle PersonalToolbar
(function ptbut() {
if (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 Bookmarks',
tooltiptext: 'Toggle Bookmarktoolbar',
};
for(var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick );
document.addEventListener('keydown', (event) => {
let keyName = event.key;
// Mac German keyboard shortcut Cmd + <
if (event.metaKey && keyName == '<') {
PersonalToolbar.classList.toggle("low-mode");
}
}, false
);
function onClick(aEvent) {
if (aEvent.button == 0) {
console.log("Click");
PersonalToolbar.classList.toggle("low-mode");
}
}
})();
Alles anzeigen