- Firefox-Version
- 108.01 (64Bit)
- Betriebssystem
- Windows 10 Version 22H2 (Build 19045.2364)
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:
// 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;
}
}
}
})();
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');,
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:
// 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;
}
}
}
})();
Alles anzeigen
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?