Ok, damit funktioniert alles wieder
Super. ![]()
Ok, damit funktioniert alles wieder
Super. ![]()
black10 Wenn Du doch weitere Script nutzt, die ja auch unter Firefox 155.0 zum Großteil nicht mehr funktionieren dürften,
warum aktualisierst Du nicht ganz einfach die Dateien zur Nutzung von JavaScript im Firefox?
Es ist alles ganz genau beschrieben und ist doch wirklich nicht so schwer!
Mag sein, dass lenny's Lösungsansatz bei der Scrollbar hilft, aber die nächste Anfrage
warum dieses oder jenes Script nicht mehr funktioniert ist dann doch schon vorprogrammiert!
Noch mal:
Und richtiges Blau wäre => #0000ff
Die Skripte funktionieren bei mir jetzt auch wieder.
Super. ![]()
vor Jahren
![]()
Da liegt unter anderem der Fehler. Für den Firefox 155.0 musst Du diverse Dateien austauschen.
Und ich meinte aber was anderes!
Nutzt Du generell Scripte, und wenn ja, eben jenes das die Scrollbalken veränderte?
Funktioniert hier einwandfrei!
Hast Du das hier schon gemacht?
Die muss also nicht ersetzt werden, correcto? GL
Wenn sie in dieser Version schon vorhanden ist, nein,
Aber schaden tut es auch nicht. ![]()
black10 Nutzt Du überhaupt schon JavaScript zum Anpassen Deines Firefox?
„userChrome.js“ vom 14.11.2017.
Ja.
Sagen wir es so, noch ist es eine Beta.
Ein Testscript.
So ein Zufall!
Schau mal, was ich daraus gemacht habe!
Erklärungen gibt es ein anderes Mal (Morgen?)
// ==UserScript==
// @name Extension Options Menu.uc.js
// @description Fügt eine Menüschaltfläche zur Verwaltung von Erweiterungen hinzu
// @include main
// @charset UTF-8
// @version 5.2
// @sandbox false
// ==/UserScript==
'use strict';
(function() {
if (!window.gBrowser) return;
// ■■■■■■■ UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
const
id = 'eom-button',
label = 'Erweiterungen',
tooltiptext = 'Menü für Erweiterungsoptionen',
icon = 'skull-crossbones.svg',
colour = '#ffe10f',
iconPath = '/chrome/icons/',
showVersion = true,
showAll = false,
showDisabled = true,
sortEnabled = 0,
sortDisabled = 1;
// ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
const iconURL = curProfDir + iconPath + icon;
if (!Services.prefs.getBoolPref('svg.context-properties.content.enabled')) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true);
}
/* ============ CSS ============ */
const css = `
#${id} .toolbarbutton-icon {
-moz-context-properties: fill, stroke, fill-opacity;
fill: ${colour};
}
#${id}-popup menuitem.menuitem-iconic .menu-iconic-icon {
width: 16px;
height: 16px;
margin-inline-start: 2px;
margin-inline-end: 6px;
-moz-context-properties: fill;
}
#${id}-popup menuitem.menuitem-iconic {
font-size: 14px !important;
padding-block: 6px !important;
padding-inline: 8px !important;
}
#${id}-popup menuitem.eom-active { color: #008000 !important; }
#${id}-popup menuitem.eom-inactive { color: #CC0000 !important; }
#${id}-popup menuitem.eom-no-options { color: Gray !important; }
#${id}-popup menuitem.addon-uninstall {
text-decoration: line-through !important;
font-style: italic !important;
}
`;
const style = document.createElement('style');
style.textContent = css;
(document.head || document.documentElement).appendChild(style);
/* ============ HINWEISFENSTER ============ */
let hoverHint = null;
function createHoverHint() {
if (hoverHint) return hoverHint;
let panel = document.createXULElement('panel');
panel.id = id + '-hover-hint';
panel.setAttribute('noautohide', 'true');
panel.setAttribute('ignorekeys', 'true');
panel.setAttribute('level', 'top');
panel.style.cssText = `
appearance: none; -moz-appearance: none;
width: 520px; max-width: 520px; padding: 10px;
background: #202124; color: #fff;
border: 3px solid #4a90e2; border-radius: 8px;
box-shadow: 0 5px 18px rgba(0,0,0,.55);
pointer-events: none; z-index: 2147483647;
`;
let desc = document.createXULElement('description');
desc.id = id + '-hover-hint-text';
desc.style.cssText = `
margin: 0; padding: 5px 5px 5px 15px;
background: grey; color: #fff;
font-family: Arial, sans-serif; font-size: 15px;
line-height: 1.5; white-space: pre-wrap;
overflow-wrap: anywhere; word-wrap: break-word;
`;
panel.appendChild(desc);
(document.getElementById('mainPopupSet') || document.documentElement)
.appendChild(panel);
hoverHint = panel;
return panel;
}
function showHoverHint(event, message) {
let panel = createHoverHint();
let desc = document.getElementById(id + '-hover-hint-text');
if (!desc) return;
desc.textContent = message;
try { panel.hidePopup(); } catch(e) {}
panel.removeAttribute('hidden');
try {
panel.openPopupAtScreen(event.screenX + 18, event.screenY + 32, false);
} catch(e) {
Cu.reportError('EOM: Hinweisfenster konnte nicht geöffnet werden: ' + e);
}
}
function hideHoverHint() {
if (!hoverHint) return;
try { hoverHint.hidePopup(); } catch(e) {}
hoverHint.setAttribute('hidden', 'true');
}
/* ============ ADD-ON-AKTIONEN ============ */
function openAddonOptions(addon) {
let optionsURL = addon.optionsURL || '';
if (!addon.isActive || !optionsURL) return;
if (addon.optionsType === 3) {
if ('switchToTabHavingURI' in window) {
switchToTabHavingURI(optionsURL, true);
} else {
openTab('contentTab', { contentPage: optionsURL });
}
} else {
BrowserAddonUI.openAddonsMgr(
'addons://detail/' + encodeURIComponent(addon.id) + '/preferences'
);
}
}
function browseDir(addon) {
try {
let dir = Services.dirsvc.get('ProfD', Ci.nsIFile);
dir.append('extensions');
dir.append(addon.id + (addon.unpack ? '' : '.xpi'));
if (dir.exists()) {
dir.reveal();
} else {
Services.prompt.alert(null, 'Fehler', 'Ordner oder Datei nicht gefunden.');
}
} catch(e) {
Cu.reportError('EOM: browseDir fehlgeschlagen: ' + e);
}
}
function restart() {
let cancelQuit = Cc['@mozilla.org/supports-PRBool;1']
.createInstance(Ci.nsISupportsPRBool);
Services.obs.notifyObservers(cancelQuit, 'quit-application-requested', 'restart');
if (cancelQuit.data) return;
if (Services.appinfo.inSafeMode) {
Services.startup.restartInSafeMode(Ci.nsIAppStartup.eAttemptQuit);
return;
}
Services.appinfo.invalidateCachesOnRestart();
Services.startup.quit(
Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart
);
}
function copyToClipboard(text) {
Cc['@mozilla.org/widget/clipboardhelper;1']
.getService(Ci.nsIClipboardHelper).copyString(text);
}
/* ============ MENÜEINTRAG-KLICK ============ */
function handleItemClick(event, item) {
let addon = item._addon;
if (!addon) return;
let pending = !!(addon.pendingOperations & AddonManager.PENDING_UNINSTALL);
let hasModifier = event.ctrlKey || event.shiftKey || event.altKey || event.metaKey;
switch (event.button) {
case 0: // Linksklick
if (addon.optionsURL && !hasModifier) {
openAddonOptions(addon);
} else if (event.ctrlKey) {
browseDir(addon);
} else if (event.altKey) {
copyToClipboard(addon.id);
}
break;
case 1: // Mittelklick = Startseite
if (addon.homepageURL) openURL(addon.homepageURL);
break;
case 2: // Rechtsklick
if (!hasModifier) {
let newState = !addon.userDisabled;
if (newState) addon.disable(); else addon.enable();
updateItemState(item, newState);
} else if (event.ctrlKey) {
if (pending) addon.cancelUninstall(); else addon.uninstall();
item.classList.toggle('addon-uninstall', !pending);
}
break;
}
}
function updateItemState(item, disabled) {
item.classList.toggle('eom-active', !disabled);
item.classList.toggle('eom-inactive', disabled);
}
/* ============ MENÜ FÜLLEN ============ */
function sortKey(addon) {
let pos = addon.isActive ? sortEnabled : sortDisabled;
return pos + '\n' + addon.name.toLowerCase();
}
async function populateMenu(popup) {
while (popup.hasChildNodes()) popup.removeChild(popup.firstChild);
let addons = await AddonManager.getAddonsByTypes(['extension']);
let previousState;
addons.sort((a, b) => {
let ka = sortKey(a), kb = sortKey(b);
return ka < kb ? -1 : 1;
});
for (let addon of addons) {
if (addon.isBuiltin || addon.id.endsWith('@search.mozilla.org')) continue;
let showIt = !addon.appDisabled && (
(addon.isActive && addon.optionsURL) ||
(addon.userDisabled && showDisabled) ||
(!addon.userDisabled && showAll)
);
if (!showIt) continue;
let state = addon.isActive;
if (sortDisabled === 1 && previousState !== undefined && state !== previousState) {
popup.appendChild(document.createXULElement('menuseparator'));
}
previousState = state;
let item = document.createXULElement('menuitem');
item.classList.add('menuitem-iconic');
let name = addon.name;
if (showVersion) name += ' [' + addon.version + ']';
item.setAttribute('label', name);
// Add-on-Symbol (mit Fallback)
let addonIcon =
addon.iconURL ||
addon.iconURL64 ||
'chrome://mozapps/skin/extensions/extensionGeneric.svg';
item.setAttribute('image', addonIcon);
item.style.listStyleImage = 'url("' + addonIcon + '")';
if (addon.isActive) {
item.classList.add(addon.optionsURL ? 'eom-active' : 'eom-no-options');
} else {
item.classList.add(addon.optionsURL ? 'eom-inactive' : 'eom-no-options');
}
item._addon = addon;
item._hint =
'ID: ' + addon.id + '\n\n' +
'Linksklick = Einstellungsseite öffnen\n' +
'Rechtsklick = aktivieren/deaktivieren\n' +
'Mittelklick = Startseite öffnen\n' +
'Strg + Linksklick = Erweiterungsordner öffnen\n' +
'Strg + Rechtsklick = deinstallieren/rückgängig\n' +
'Alt + Linksklick = ID kopieren';
item.addEventListener('mouseenter', e => showHoverHint(e, item._hint));
item.addEventListener('mouseleave', () => hideHoverHint());
item.addEventListener('click', e => handleItemClick(e, item));
popup.appendChild(item);
}
}
/* ============ WIDGET ============ */
try {
CustomizableUI.createWidget({
id: id,
defaultArea: CustomizableUI.AREA_NAVBAR,
label: label,
tooltiptext: tooltiptext,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity';
button.style.listStyleImage = 'url("' + iconURL + '")';
button.style.color = colour;
button.setAttribute('type', 'menu');
let popup = document.createXULElement('menupopup');
popup.id = id + '-popup';
popup.addEventListener('popupshowing', e => {
if (e.target === popup) populateMenu(popup);
});
popup.addEventListener('popuphiding', hideHoverHint);
popup.addEventListener('popuphidden', hideHoverHint);
button.appendChild(popup);
// Kontextmenü unterdrücken
button.addEventListener('contextmenu', e => e.preventDefault());
// Mittel-/Rechtsklick auf den Button selbst
button.addEventListener('click', e => {
if (e.target !== e.currentTarget) return;
if (e.button === 1) {
e.preventDefault();
restart();
} else if (e.button === 2) {
e.preventDefault();
setTimeout(() => {
let cm = document.getElementById('toolbar-context-menu');
if (cm) cm.hidePopup();
}, 0);
BrowserAddonUI.openAddonsMgr('addons://list/extension');
}
});
}
});
} catch(e) {
Cu.reportError('EOM: Widget konnte nicht erstellt werden: ' + e);
}
/* ============ AUFRÄUMEN ============ */
window.addEventListener('unload', () => {
hideHoverHint();
try { CustomizableUI.destroyWidget(id); } catch(e) {}
}, { once: true });
})();
Alles anzeigen
Es wird definitiv noch kleine Änderungen geben.
Es fehlen noch Erläuterungen und diverse Kommentare.
Und auch der Header gefällt mir so nicht wirklich.
FuchsFan Endlich am Rechner! Ja ich sehe!!
Und scheint recht interessant zu sein! Habe es mir mal gesichert!
Danke.
Aber Du kennst mich![]()
Ich werde daran herumbasteln.
Wenn es aus dem Text nicht hervor geht,
Auf einem Smartphone recht schwierig!
Aber gut, habe das zweite Bild, das mit dem Text, vergrößert.
Kann nicht wirklich gut erkennen, was da so anders sein soll, als bei dem Addonbutton, der schon vorhanden ist.
Muss es also doch erst testen und vergleichen.
Ich habe jetzt dreimal Deine Bescheibung zu dem Script gelesen,
aber weiß immer noch nicht, wozu es gut sein soll.
Leider kann ich es z.Z. nicht ausprobieren, daher dieser blöde Kommentar.
Sorry.
Und dafür, also das Backup, gibt es hier on Board sogar ein PS1-Script!
seipe Hast Du vor dem Update ein Backup gemacht?
Spiel es zurück und warte das offizielle Update ab.
Kein Backup, kein Mitleid!
Dann musst Du Dich noch einmal ganz genau an die Anleitunen von Endor halten.
Eventuell hast Du ja dann Glück.
ZitatUnabhängig von deinem Problem, woher hast du die Version?
Wird wie immer überall angeprießen!
z.B. auf http://www.deskmodder.de
Und ist auf den Servern schon vorhanden.
Ist halt immer die gleiche Leier.
Magst Du auch mal die Icons dazu packen?
Nein, ich packe ganz einfach meinen kompletten Ordner,
d.h. alle SVG's die ich habe.
icons.zip
Ach und die zwei "Buttons" auch!![]()
![]()
... mir fehlt als Teil der arbeitenden (!) Bevölkerung einfach die Zeit. Ich gehe auch Samstags ... arbeiten,
Dafür bist Du aber hoffentlich gesund.
Und wenn Dir Deine Arbeit dann auch noch Spaß macht, fast so gut wie ein Sechser im Lotto, oder?
.DeJaVu Es ging um das mehrmalige Löschen des Script-Caches.
So ein Problem hatte ich auch schon mal und da half damals nur die "Holzhammermethode"!
Per Hand löschen und neu aufbauen lassen!
Selbst das mit dem "Fehlerbehebungsmodus ... " wollte nicht.
Allerdings sehe ich Potenzial bei etlichen deiner Themen
![]()
Ne, im Ernst, auf dieser Sache mit dem AV, auch wenn der Themenstarter da etwas angepisst reagiert hat,
war es geklärt und war eine Sache zwischen Andreas, Sören und Carbonbike.
Da muss doch nicht das halbe Board auch noch seinen Senf dazu geben, oder?
Sicher habt Ihr recht, aber das mit dem AV hatte doch mit dem Problem an sich nichts zu tun!
Ich weiß, ist nicht immer so, aber hier war es so.
Aber jetzt muss ich auch was los werden!
ZitatSicherheitslösungen von Drittanbietern lassen sich als Angriffsziel unter Windows missbrauchen. Nun hat Nightmare Eclipse einen weiteren 0-Day veröffentlicht, der Windows-Nutzer tangiert. In Kaspersky Antivirus For Endpoint gibt es eine 0-Day-Schwachstelle, die für normale Benutzer eine Erhöhung der Privilegien auf Systemrechte ermöglicht.
Wo hab' ich's nur gelesen?
Und ...
Zitates [gibt] eine Backdoor namens SLEEPWALKER, die den ESET Management Agenten in Windows-Systemen für Angriffe missbraucht.