Moin Sören,
herzlichen Dank, das hat funktioniert.
Mfg
Moin Sören,
herzlichen Dank, das hat funktioniert.
Mfg
Moin milupo ,
ich habe gemacht aber habe ich immer noch mit Restore aber Backup funktioniert.
.Wenn ich "Bookmarks Restore" klicke, öffnet Fenster und ich wähle eine Backup Datei aber dann bekomme ich diese Fehler für diese Teil in Code:
// confirm ok to delete existing bookmarks
if (!Services.prompt.confirm(null,
PlacesUIUtils.getString("bookmarksRestoreAlertTitle"), // <=== das ist Line 100
PlacesUIUtils.getString("bookmarksRestoreAlert")))
return;
Mfg
ich habe so das Code geändert, jetzt wenn ich Bookmarks von eine Backup Datei wiederherstellen klick dann kommt Error:
Uncaught TypeError: PlacesUIUtils.getString is not a function
Uncaught TypeError: PlacesUIUtils.getString is not a function
fpCallback file:///C:/Users/sam2008/AppData/Roaming/Mozilla/Firefox/Profiles/vi5nw3kj.default/chrome/bookmarks_backup_restore_button.uc.js:76
bookmarks_backup_restore_button.uc.js:76:34
(function() {
try {
//Components.utils.import("resource:///modules/CustomizableUI.jsm");
ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
//ChromeUtils.import("resource://gre/modules/Services.jsm");
//ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
//ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
//ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, { MigrationUtils: "resource:///modules/MigrationUtils.sys.mjs", });
ChromeUtils.defineESModuleGetters(lazy, { BookmarkJSONUtils: "resource://gre/modules/BookmarkJSONUtils.sys.mjs", });
ChromeUtils.defineESModuleGetters(lazy, { PlacesBackups: "resource://gre/modules/PlacesBackups.sys.mjs", });
ChromeUtils.defineESModuleGetters(lazy, { PlacesUtils: "resource://gre/modules/PlacesUIUtils.sys.mjs",});
CustomizableUI.createWidget({
id: "uc-bookmarks_backup", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Bookmarks Backup", // button title
tooltiptext: "Bookmarks Backup", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = function fpCallback_done(aResult) {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// There is no OS.File version of the filepicker yet (Bug 937812).
lazy.PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
.catch(Cu.reportError);
}
};
fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeSave);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.defaultString = lazy.PlacesBackups.getFilenameForDate();
fp.defaultExtension = "json";
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
CustomizableUI.createWidget({
id: "uc-bookmarks_restore", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Bookmarks Restore", // button title
tooltiptext: "Bookmarks Restore", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = aResult => {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// check file extension
if (!fp.file.path.toLowerCase().endsWith("json") &&
!fp.file.path.toLowerCase().endsWith("jsonlz4")) {
this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
return;
}
// confirm ok to delete existing bookmarks
if (!Services.prompt.confirm(null,
PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
PlacesUIUtils.getString("bookmarksRestoreAlert")))
return;
(async function() {
try {
await lazy.BookmarkJSONUtils.importFromFile(fp.file.path, {
replace: true,
});
} catch (ex) {
PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
}
})();
}
};
fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeOpen);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-bookmarks_backup .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
fill: red; /* icon color name/code */\
}\
#uc-bookmarks_restore .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
fill: green; /* icon color name/code */\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
milupo ,
danke, jetzt alles funktioniert außer Backup Button. Wenn ich Backup Button klicke, passiert gar nicht!!
Hallo 2002Andreas , Hallo milupo ,
danke, ich habe gemacht und jetzt "Restart.Toolbar.uc.js" funktioniert aber "bookmarks_backup_restore_button.uc.js" nicht.
Mfg
Moin Zusammen,
mit Firefox 137 Version wird nicht Backup, Restore und neue Start in Toolbar angezeigt, kann bitte jemand sagen wo das Problem ist?
bookmarks_backup_restore_button.uc.js
(function() {
try {
//Components.utils.import("resource:///modules/CustomizableUI.jsm");
ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
//ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
CustomizableUI.createWidget({
id: "uc-bookmarks_backup", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Bookmarks Backup", // button title
tooltiptext: "Bookmarks Backup", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = function fpCallback_done(aResult) {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// There is no OS.File version of the filepicker yet (Bug 937812).
PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
.catch(Cu.reportError);
}
};
fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeSave);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.defaultString = PlacesBackups.getFilenameForDate();
fp.defaultExtension = "json";
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
CustomizableUI.createWidget({
id: "uc-bookmarks_restore", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Bookmarks Restore", // button title
tooltiptext: "Bookmarks Restore", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = aResult => {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// check file extension
if (!fp.file.path.toLowerCase().endsWith("json") &&
!fp.file.path.toLowerCase().endsWith("jsonlz4")) {
this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
return;
}
// confirm ok to delete existing bookmarks
if (!Services.prompt.confirm(null,
PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
PlacesUIUtils.getString("bookmarksRestoreAlert")))
return;
(async function() {
try {
await BookmarkJSONUtils.importFromFile(fp.file.path, {
replace: true,
});
} catch (ex) {
PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
}
})();
}
};
fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeOpen);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-bookmarks_backup .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAerSURBVHhe7Z1ZbxNXFIADqlr1P/CGWql9q9S+VeovaNWX/oOqErWdEEw2lrgQKhJiOwtJHNuzeHc2IIGQlKQESoEshKpUBVKkLo90oaBKfWxvz/HM2Hfs6+ngPfgc6RPYd9bzzV3GmWu3UFBQUFBkwuPx7PU51Y+AS16HuuN1qj+WwXc+h5IYPKC8o2+e4nkCZLw03qp+ATJYJfE6lX+DbUqPvhsKuzHolNtFCa0EKMXrir6l74rCCGySoCn50OtQQpCkZWiWVg0gcc+MBE67o+z+sQR7eDxeMt8ei7NwWyQnxaH8zO+vtihRv0t5n7WwPXoq6h9nXJH9IOOukSArfj+RZH/1lc+9o3Hh9usFXITnPZ6Zl/WU1C/6XaF9Pqfyq+ggRYiSWwqPoKaItl9XHMqAnpb6BRzEIn9QUo/Cpk/KbPaURvqEbDpoUXJLgRcyAs3XJW+i9gwmmHIklj0OaCX+9rVPv6qnpvbhdURfNw4GmemT2bWxsImVYSlbjoiSWwq8kLFDEXY3mq4Ld9Q0G+b6M79DeltPT+0DOrSPjQMZdyvs2lmzjGYQguD+jWPxfiq/q6en9gFVtNs4EPlIYe0QCXnWWxl+6Mlts6GEOJUANONdMAJzDbrkN/VU1SZ4IcoRqCE2hDzpDlaEBx2h7DYbSQgP3iP5HKo84hp5RU9ZdYOEaBQTYgBNu6SnrLpBQjR4IbO+KbYYmGNKbzL7HtaUoQPRN/S0VS9IiAYvZGdtiT3dWWNPHl5lcm8i+z7cqzn1tFUvSIiGSAhyYXQm+z4IOaWnrXpBQjRsCXEop/W0VS9IiAYJAUiIIEiIBgkBSIggSIgGCQFIiCBIiAYJAUiIIEiIBgkBSIggSIgGCQFIiCAaVcjqaJJFjkbhmGIlEz8eYzeDSdN2i0FCACsho+25BJVDrDdm2m4xSAhgJSTcXRkhs5/HTdstBgkBrIRsKim2NCR4sO05WBlJsG1um1aQEIA6dUGQEA0SAlgJuRVKsYWBBLvQHxeCozB++XIhIYCVkEBHLkFCXCq7PpEyrVMOJASwEjLOJagYX56tXC0hIYCVkK8CKTbVF2PpE2IWYRTFL18uJASgTl0QJESDhABWQrYjabY2noR+ImGLtbEkuxMpvZMnIYCVEPxgkd+nHaSeqGkbzwMJAayE4JxDfp928MNQGGsWvx27kBDASsiiL5G5Fxl322PicJQtnCl95EVCAOrUBUFCNEgIQEIEQUI0SAhAQgRBQjRICEBCBEFCNEgIQEIEQUI0SAhAQgRBQjRICEBCBFFpIfc6wizeqrAAMHdQZj91hoTLISREEJUS8ltXkF1uN383IzLsUtm6Oyxch4QIohJCsBaobYppmXzOQ2153GWuLSREEOUK2TwcZiNQC/jyYGck85jO6MHcSSIhaMZ2QAIJsYhSheDVPg9XPf8+Pk04dTKefdjgdjjF5B7z38aHgOuHJBJSLEoR8giaqFBr7jUyelBlV4YFTxJG0uzc6XhGFr98uk1m30DtMl6TED3sCFkdySUOGeb+j0jd0UxtEJ2owdWxpOmkEX47kx0kJBN2hCAT7sJO2w/gDKVtm89Dbcipoo/3TPfZm+lULXadkCWvxMa4eX94AiU97AxN2PxAnA1xTR4+T4UzpoTL14hdJwS5HYplJCD49dyiE7PLupTO9DnXxlO2p51Vk10pZEOyN6N1N9KQQuQeECL47neDryeLP6qJ/cimIi5DsEZtWTRLW7DuHYunDjdk2IfgfYMNyaLJg+3i+sIyAPfLN8cNIwSZ7BBIgdehTq1Tx7kZ+SeEIgLuSKaTx59/yC+/MZnMDIux3xD1O9h0DcGwGOem41S2/PLzOGyGbeMNp6ipjPVqA4W4YE46Lo/rYTlOhcsvx/2dbc+dP9JQQpBln2QSsjKcG/b6XYXDU5zvZ5SH4OTzyy/0576MOPVZYdJix3O/34HTmfPLJ0C2UY59Dl+2BQk3yhB8zZfj8kYZPm7KlyG4P359pOGELBUIMd8Y5p/UCidEdD+BV6ZRHvcUCuGHwpcGC69ivn3HaQd8GY7OjDIkf7SGyxtluB2+DMH98esjJISE5IKarAZvsoLQeYs69XBXeZ06zvcYahXfTJo6dcFHMJkaBuXBzqiwU8fOHI+teKcONRDWL9ap53/RTcMI+b9h783JwhPOAkNHy2EvDIvzr16eLRVuEMsY9m5aDGtxPathL+63IYe9zXxjyM+LJyF1BufEY3Nr5OGX9SuNI2TJF2YJj8ykbiVzM8gj9URgGfG3t+1W8INN0wedx+JZGXUX4nep//ic1n8bf5Hxg5jvr1xuHCHNzERnjN1bNstoGCGxviS7kZ5n6+cuvvBszV9kD64usz8emEU0jJDLwTn250PxwTUjdRWC1bbYldKs1FXIrH9aeFDNTO2FcD9OLPUm2FNqrkzUXMhAq/JadofArZkF4YE1K+l+04eXbj1t1Q0wb/qBe/zp0ZtTC8JRSTOxGJjlZTCfS35PT1l1o98V2gc7fGzaOWHC61Rusxa2R09Z9eOMK7Ifasq26GCaHod6Hy9aPVW1C4/Hs9friHzgdaiTIGcJ/l1tapzKHOTjk5r9ljoFBQUFBQUFBYWtaGn5D673RcwY7JWVAAAAAElFTkSuQmCC); /* icon / path to icon */ \
fill: red; /* icon color name/code */\
}\
#uc-bookmarks_restore .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
fill: green; /* icon color name/code */\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Restart.Toolbar.uc.js
(function() {
try {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var appversion = parseInt(Services.appinfo.version);
var button_label = "Neu Starten";
CustomizableUI.createWidget({
id: "uc-restart", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: button_label, // button title
tooltiptext: button_label, // tooltip title
onClick: function(event) {
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
var observerSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
if(event.button=='1') { // middle-click - clear caches
Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart();
}
if(event.button=='0' || event.button=='1') { // left/middle-click - restart
observerSvc.notifyObservers(cancelQuit, "quit-application-requested", "restart");
if(cancelQuit.data) return false;
Services.startup.quit(Services.startup.eRestart | Services.startup.eAttemptQuit);
}
},
onCreated: function(button) {
return button;
}
});
var icon = "chrome://global/skin/icons/reload.svg";
if(appversion < 92) icon = "chrome://browser/skin/reload.svg";
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-restart .toolbarbutton-icon {\
list-style-image: url("'+icon+'"); /* icon / path to icon */ \
transform: scaleX(-1); /* icon mirroring */\
fill: red; /* icon color name/code */\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Vielen Dank
Mfg
vielen Dank.
Mfg
Hallo Sören,
1- Nein
2- Ja (wir haben Users dass benutzen)
Mfg
Hallo Zusammen,
wegen diese Information, wie kann ich OpenH264-Videocodec von 2.3.2 auf Version 2.6 updaten?
Vielen Dank
Mfg
Hallo Andreas,
gerne geschehen
Mfg
Moin Andreas,
hier ist PowerShell Skript:
# PowerShell-Skript zum Deinstallieren von "DejaVuSans"-Schriftarten auf Windows 11
# Dieses Skript muss als Administrator ausgeführt werden
# Pfad zum Fonts-Verzeichnis
$fontsDirectory = "$env:windir\Fonts"
# Liste aller installierten Schriftarten erhalten
$installedFonts = Get-ChildItem -Path $fontsDirectory -Include "*DejaVu*" -Recurse
if ($installedFonts.Count -eq 0) {
Write-Host "Keine 'DejaVuSans'-Schriftarten im Fonts-Verzeichnis gefunden."
} else {
foreach ($font in $installedFonts) {
try {
Write-Host "Lösche Schriftartdatei: $($font.FullName)"
Remove-Item -Path $font.FullName -Force
} catch {
Write-Host "Fehler beim Löschen von $($font.FullName): $_"
}
}
}
# Schriftarten aus der Registrierung entfernen
$fontRegKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
$fontsInRegistry = Get-ItemProperty -Path $fontRegKeyPath
foreach ($font in $fontsInRegistry.PSObject.Properties) {
if ($font.Name -like "*DejaVu*") {
try {
Write-Host "Lösche Registrierungseintrag für Schriftart: $($font.Name)"
Remove-ItemProperty -Path $fontRegKeyPath -Name $font.Name -Force
} catch {
Write-Host "Fehler beim Löschen des Registrierungseintrags $($font.Name): $_"
}
}
}
# Schriftarten-Cache aktualisieren
Write-Host "Aktualisiere den Schriftarten-Cache..."
& rundll32.exe shell32.dll,Control_RunDLL fonts
Alles anzeigen
Mfg
Moin Sören,
herzlichen Dank. Leider Chefetage will nicht warten.
Mfg
Soll ich selber erstellen?
Nein. Wenn Firefox ESR 128 diese Option noch nicht kennt, bringt es auch nichts, diese Option zu erstellen.
Hallo Sören,
ich habe fast gedacht.
Hast du meine Extension gesehen?
Findest du gut gegen diese Sicherheit Lücke?
Vielen Dank
Mfg
Moin Sören,
vielen Dank.
In Firefox 128.3.1 ESR gibt es nicht network.socket.ip_addr_any.disabled Parameter. Soll ich selber erstellen?
Wenn ja und auf true erstellen, wird diese Sicherheit Lücke gelöst oder Firefox hat immer noch diese Lücke?
Hier ist meine Extension Code.
manifest.json Datei:
{
"manifest_version": 2,
"name": "URL/IP Anfrage von 0.0.0.0 zu 127.0.0.1 Umleiter",
"description": "Leitet alle Anfragen von 0.0.0.0 zu 127.0.0.1 um",
"version": "1.0",
"browser_specific_settings": {
"gecko": {
"id": "umleitung@intern.local",
"strict_min_version": "128.0"
}
},
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*/*"
],
"icons": {
"16": "icons/icon.png",
"48": "icons/icon.png",
"128": "icons/icon.png"
},
"background": {
"scripts": ["background.js"]
}
}
Alles anzeigen
background.js Datei:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if (details.url.includes("0.0.0.0")) {
const newUrl = details.url.replace("0.0.0.0", "127.0.0.1");
console.log("Redirecting request to:", newUrl);
return { redirectUrl: newUrl };
}
return { cancel: false };
},
{ urls: ["<all_urls>"] },
["blocking"]
);
Alles anzeigen
Mfg
Hallo Sören,
vielen Dank.
Ich habe eine Frage, wenn ich eine Extension schreibe, das alle Request von 0.0.0.0 zu 127.0.0.1 weiterleiten, wird diese Probleme behoben oder nicht?
Mfg
Hallo Zusammen,
gibt es eine Info von Mozilla wegen diese Sicherheit Probleme?
0.0.0.0 Day: Exploiting Localhost APIs From the Browser
Vielen Dank
Mfg
Hallo Zusammen,
kann jemand mir sagen, wieso kommt (NULL) Beschreibung (bis Firefox 115.13.0 ESR war normal aber mit 128 ESR kommt (NULL)).
Hier ist ToolbarAutoHide.uc.js code:
(function () {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let navbox = document.getElementById('navigator-toolbox');
let menubar = document.getElementById('toolbar-menubar');
let tabsbar = document.getElementById('TabsToolbar');
let navbar = document.getElementById('nav-bar');
let perbar = document.getElementById('PersonalToolbar');
// Überwachen Änderungen an Symbolleistenattributen/toolbar
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
toolbarFlag(mutation);
});
});
let config = {
attributes: true,
attributeOldValue: true,
attributeFilter: ['customizing', 'autohide', 'collapsed', 'barAuto']
};
observer.observe(menubar, config);
observer.observe(tabsbar, config);
observer.observe(navbar, config);
observer.observe(perbar, config);
// Überwachen Größe der Tableiste/tabsbar
let resizeObserver = new ResizeObserver(function (entries) {
entries.forEach(function (entry) {
toolbarFlag(entry);
});
});
resizeObserver.observe(tabsbar);
/**/
// Tab-Leiste und Navigationsleiste können ebenfalls ausgeblendet werden
tabsbar.setAttribute('toolbarname', tabsbar.getAttribute('aria-label'));
navbar.setAttribute('toolbarname', navbar.getAttribute('aria-label'));
toolbar-menubar.setAttribute('toolbarname', "Menüleiste");
/*
// Die Lesezeichenleiste wird standardmäßig automatisch geöffnet und geschlossen
menubar.removeAttribute('barAuto');
tabsbar.removeAttribute('barAuto');
navbar.removeAttribute('barAuto');
perbar.setAttribute('barAuto', 'true');
*/
// Speichern, ob in Firefox automatisch geöffnet/geschlossen werden soll
menubar.setAttribute('persist', 'barAuto');
tabsbar.setAttribute('persist', 'barAuto');
navbar.setAttribute('persist', 'barAuto');
perbar.setAttribute('persist', 'barAuto');
// Die Tab-Leiste weist viele Probleme auf, daher sollte sie sich beim Start nicht automatisch öffnen und schließen.
tabsbar.removeAttribute('barAuto');
// Fügen Navigationsfeld ein leeres Element hinzu, um alles zu löschen. Doppelklicken Sie zum Wiederherstellen.
let box = MozXULElement.parseXULToFragment(`
<vbox id="nav-box-escape" context="toolbar-context-menu" tooltiptext="Doppelklicken Sie, um die Symbolleiste anzuzeigen"/>
`);
navbox.appendChild(box);
/*
// Symbolleisten-Kontextmenü zum Kontextmenükopf hinzugefügt
document.getElementById('context-navigation').setAttribute('context', 'toolbar-context-menu');
*/
// Element zum Symbolleistenmenü hinzufügen
let menu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-menu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-popup" onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('menu_customizeToolbars').before(menu);
// Zum Rechtsklickmenü in der Navigation hinzufügen
let contextmenu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-contextmenu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-contextpopup"
onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('viewToolbarsMenuSeparator').after(contextmenu);
let uccss = `
#navigator-toolbox #titlebar {
-moz-box-ordinal-group : 0;
}
#navigator-toolbox #toolbar-menubar {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox #TabsToolbar {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox #nav-bar {
-moz-box-ordinal-group : 3;
}
#navigator-toolbox #PersonalToolbar {
-moz-box-ordinal-group : 4;
}
#navigator-toolbox[barsAuto]:not([custommode]) {
z-index : 100 !important;
position : relative !important;
}
#navigator-toolbox[barsAuto]:not(:-moz-lwtheme, [custommode]) {
background-color : var(--toolbar-bgcolor) !important;
background-image : var(--toolbar-bgimage) !important;
}
#navigator-toolbox[barsAuto]:-moz-lwtheme:not([custommode]) {
background-color : var(--lwt-accent-color) !important;
background-image : var(--lwt-header-image, var(--lwt-additional-images)) !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[notShown] {
-moz-box-ordinal-group : 10;
transition : all 0.3s ease 0s;
height : 5px;
cursor : alias;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape:not([notShown]) {
display : none;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[allAuto] {
margin-block-end : -5px;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-box-escape[allAuto] {
height : 0;
margin-block-end : 0;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]) {
margin-block-end : 0;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]):hover {
margin-block-end : calc(var(--barshide-height) * -1px);
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] {
margin-block-start : calc(var(--ttlhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] {
margin-block-start : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 1;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #PersonalToolbar[barAuto] {
margin-block-start : calc(var(--barhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #PersonalToolbar[barAuto] {
margin-block-start : 0 !important;
opacity : 1 !important;
}
`;
let ucuri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(uccss));
let ucsss = Cc['@mozilla.org/content/style-sheet-service;1']
.getService(Ci.nsIStyleSheetService);
ucsss.loadAndRegisterSheet(ucuri, ucsss.AGENT_SHEET);
} catch (e) { };
})();
// beim Start eingestellt
window.addEventListener('MozAfterPaint', toolbarsset, { once: true });
// Anzeige von #TabsToolbar und Navigationsleiste mit ESC-Taste erzwingen
document.addEventListener('keydown', function (event) {
if (event.keyCode == 27) navescape();
});
// Doppelklicken Sie auf die Leiste, wenn alles gelöscht ist, um sie wiederherzustellen
document.getElementById('nav-box-escape').addEventListener('dblclick', navescape);
function navescape() {
document.getElementById('nav-bar').setAttribute('collapsed', 'false');
document.getElementById('nav-bar').removeAttribute('barAuto');
document.getElementById('TabsToolbar').setAttribute('collapsed', 'false');
document.getElementById('TabsToolbar').removeAttribute('barAuto');
}
// Änderung des Attributwerts der Symbolleiste (anpassen, ausblenden)
function toolbarFlag(aEvent) {
let barelm = aEvent.target;
let attribute = aEvent.attributeName;
// Deaktivieren Sie die Anzeige der Tab-Leiste beim Hinzufügen von Tabs
if ((barelm.id == 'TabsToolbar')
&& (attribute == 'collapsed')
&& !(barelm.hasAttribute('collapsed'))) {
barelm.setAttribute('collapsed', aEvent.oldValue);
}
toolbarsset();
}
function toolbarsset() {
let boxelm = document.getElementById('navigator-toolbox');
let ttlbar = document.getElementById('titlebar');
let escbox = document.getElementById('nav-box-escape');
let barelm, hidingAttr, barheight, hasShown;
let barshide = 0, barsAuto = false, custommode = false, notShown = true;
let ttlhide = 0, tbarsAuto = false, allAuto = false;
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
if (hasShown = (barelm.getAttribute(hidingAttr) == 'true')) barelm.removeAttribute('barAuto');
barheight = barelm.clientHeight;
if (barelm.hasAttribute('barAuto')) {
barsAuto = true;
allAuto = true;
barelm.style.setProperty("--barhide-height", barheight);
barshide += barheight;
if ((toolbar == 'toolbar-menubar') || (toolbar == 'TabsToolbar')) {
tbarsAuto = true;
ttlhide += barheight;
}
} else {
if (!hasShown) notShown = false;
barelm.style.setProperty("--barhide-height", 0);
}
if (barelm.hasAttribute('customizing')) custommode = true;
}
if (barsAuto) boxelm.setAttribute('barsAuto', 'true');
else boxelm.removeAttribute('barsAuto');
if (tbarsAuto) ttlbar.setAttribute('barsAuto', 'true');
else ttlbar.removeAttribute('barsAuto');
if (custommode) boxelm.setAttribute('custommode', 'true');
else boxelm.removeAttribute('custommode');
if (notShown) {
escbox.setAttribute('notShown', 'true');
if (allAuto) escbox.setAttribute('allAuto', 'true');
else escbox.removeAttribute('allAuto');
} else {
escbox.removeAttribute('notShown');
}
boxelm.style.setProperty("--barshide-height", barshide);
ttlbar.style.setProperty("--ttlhide-height", ttlhide);
}
// Menüerstellung
function autoHideToolbarsPopupShowing(aEvent) {
let popup = aEvent.target;
if (popup != aEvent.currentTarget) return;
while (popup.firstChild) popup.removeChild(popup.firstChild); // übersichtliches Menü
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
let barelm, hidingAttr;
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
let menuitem = MozXULElement.parseXULToFragment(`
<menuitem id="toolbarauto-${toolbar}" toolbarId="${toolbar}" type="checkbox"
label="${barelm.getAttribute('toolbarname')}"
checked="${(barelm.getAttribute('barAuto') == 'true')}"
disabled="${(barelm.getAttribute(hidingAttr) == 'true')}"
oncommand="autoHideToolbar(event);" />
`);
popup.append(menuitem);
}
}
// Automatische Prüfung des Öffnens/Schließens des Menüs
function autoHideToolbar(aEvent) {
let eventelm = aEvent.target;
let barid = eventelm.getAttribute('toolbarId');
let barelm = document.getElementById(barid);
if (eventelm.getAttribute('checked') == "true") {
barelm.setAttribute('barAuto', 'true');
} else {
barelm.removeAttribute('barAuto');
}
}
Alles anzeigen
Vielen Dank
Mfg
Hallo,
siehe:
BeitragRE: Bookmark Backup/Restore Script funktioniert seit FF 125 nicht mehr
Habe es für die Nightly (FF127) angepasst. FF125 habe ich noch nicht. Sollte aber auch mit FF125 laufen. Bitte mal testen:
(Quelltext, 126 Zeilen)
BrokenHeart16. April 2024 um 08:43
Moin,
herzlichen Dank
Mfg
Moin Zusammen,
bookmarks_backup_restore_buttons.uc.js UserScript funktioniert nicht mit Firefox 126.0b9 Version aber mit Firefox 115.10.0 ESR funktioniert.
Kann jemand bitte helfen?
(function() {
try {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
var {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {});
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
CustomizableUI.createWidget({
id: "uc-bookmarks_backup", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Lesezeichen sichern", // button title
tooltiptext: "Lesezeichen sichern", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = function fpCallback_done(aResult) {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// There is no OS.File version of the filepicker yet (Bug 937812).
PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
.catch(Cu.reportError);
}
};
fp.init(window, "json",
Ci.nsIFilePicker.modeSave);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.defaultString = PlacesBackups.getFilenameForDate();
fp.defaultExtension = "json";
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
CustomizableUI.createWidget({
id: "uc-bookmarks_restore", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "Lesezeichen Wiederherstellen", // button title
tooltiptext: "Lesezeichen Wiederherstellen", // tooltip title
onClick: function(event) {
if(event.button=='0') {
let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
let fpCallback = aResult => {
if (aResult != Ci.nsIFilePicker.returnCancel) {
// check file extension
if (!fp.file.path.toLowerCase().endsWith("json") &&
!fp.file.path.toLowerCase().endsWith("jsonlz4")) {
this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
return;
}
// confirm ok to delete existing bookmarks
if (!Services.prompt.confirm(null,
PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
PlacesUIUtils.getString("bookmarksRestoreAlert")))
return;
(async function() {
try {
await BookmarkJSONUtils.importFromFile(fp.file.path, {
replace: true,
});
} catch (ex) {
PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
}
})();
}
};
fp.init(window, "json",
Ci.nsIFilePicker.modeOpen);
fp.appendFilter("json",
RESTORE_FILEPICKER_FILTER_EXT);
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.displayDirectory = backupsDir;
fp.open(fpCallback);
}
},
onCreated: function(button) {
return button;
}
});
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-bookmarks_backup .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
fill: red; /* icon color name/code */\
}\
#uc-bookmarks_restore .toolbarbutton-icon {\
list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
fill: green; /* icon color name/code */\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Vielen Dank
Mfg