Hast Du mal dieses Skript für mich?
Oder einen Linkt dazu?
Beiträge von Mira_Belle
-
-
2002Andreas Was heißt "unten links" ?
Ich habe den Button oben in die Menüleiste geschoben, funktioniert.
In die Tableiste, funktioniert.
Und in der Navbar funktioniert es sowieso.
Auch in der PersonalToolbar funktioniert der Button. -
Verstehe ich da etwas falsch?
Der Button für die Erweiterungen ist bei mir verschiebbar
und er funktioniert!
In der 136.0.1 sowie in der 138.0a1 ohne Probleme.JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; /* Konfiguration */ let origID = "unified-extensions-button"// ID des originalen Buttons let label = "Erweiterungen" let tooltiptext = label; // auch eigener Text möglich, dieser in Anführungszeichen /* Ende Konfiguration */ let menuButton = document.getElementById(origID) let buttonID = 'ucjs_' + origID; if (!CustomizableUI.getPlacementOfWidget( buttonID )) { try { CustomizableUI.createWidget({ id: buttonID, type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = buttonID; toolbaritem.className = 'chromeclass-toolbar-additional'; toolbaritem.setAttribute('label', label); return toolbaritem; } }); if (!CustomizableUI.getPlacementOfWidget( buttonID )) { menuButton.style.display = 'none'; return; }; } catch(e) { menuButton.style.display = 'none'; return; }; }; let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` #unified-extensions-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon { width: 28px !important; height: 28px !important; fill: #FF00FF !important; fill-opacity: 1 !important; } `), null, null); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); setTimeout(function() { document.getElementById(buttonID).appendChild(menuButton); menuButton.setAttribute('consumeanchor', buttonID); menuButton.setAttribute('label', label); menuButton.setAttribute('tooltiptext', tooltiptext); }, 0); }());
-
-
Habe nun etwas Zeit damit verbracht, https://searchfox.org zu bemühen.
So wirklich, also eigentlich gar nicht, verstehe ich das ganze nicht!
Habe aber etwas gefunden, das, so denke ich, jeden Fall, uns weiterbringen könnte.
JavaScript
Alles anzeigen/** * Allows simple exporting of bookmarks. */ exportBookmarks: function PO_exportBookmarks() { let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); let fpCallback = function fpCallback_done(aResult) { if (aResult != Ci.nsIFilePicker.returnCancel) { var { BookmarkHTMLUtils } = ChromeUtils.importESModule( "resource://gre/modules/BookmarkHTMLUtils.sys.mjs" ); BookmarkHTMLUtils.exportToFile(fp.file.path).catch(console.error); } }; fp.init( window.browsingContext, PlacesUIUtils.promptLocalization.formatValueSync( "places-bookmarks-export" ), Ci.nsIFilePicker.modeSave ); fp.appendFilters(Ci.nsIFilePicker.filterHTML); fp.defaultString = "bookmarks.html"; fp.open(fpCallback); },
Nur wie, weiß ich (noch) nicht.
-
milupo Ah verstehe.
Nur wodurch wird dann der Speichern-Dialog aufgerufen?
Wie könnte man das mit den Browserwerkzeugen herausfinden? -
Das ist doch gar nicht in diesem Skript hier.
Stimmt!
Man öffne die Browserwerkzeuge und untersucht "Import and Backup"
=> https://support.mozilla.org/en-US/kb/expor…kup-or-transfer
Wenn man dann auf event klickt bekommt man diesen Code. -
Oh, natürlich auch von mir alles Liebe und Gute.
-
JavaScript
Alles anzeigen_onClick() { let controlElement = this.labeledControlElement; if (!controlElement || this.disabled) { return; } controlElement.focus(); const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; if (controlElement.namespaceURI != XUL_NS) { return; } if ( (controlElement.localName == "checkbox" || controlElement.localName == "radio") && controlElement.getAttribute("disabled") == "true" ) { return; } if (controlElement.localName == "checkbox") { controlElement.checked = !controlElement.checked; } else if (controlElement.localName == "radio") { controlElement.control.selectedItem = controlElement; } }
Kann jemand etwas mit diesem Fetzen Code anfangen?
Ich glaube, die letzten Zeilen, mit "checkbox" könnten etwas mit dem Speicherndialog zu tun haben.
-
Hier das komplett überarbeitete Skript.
JavaScript
Alles anzeigen// export_folder_to_html.uc.js // Exports folder bookmarks to HTML file // Item "Export folder to HTML" in the context menu of the folder in “Manage Bookmarks” and Sidebar (async topic => { let imp = (m, n = m) => ChromeUtils.importESModule(`resource://gre/modules/${m}.sys.mjs`, {})[n]; let exporter = { get dps() { delete this.dps; return this.dps = imp("DownloadPaths"); }, get exporter() { delete this.exporter; return this.exporter = imp("BookmarkHTMLUtils", "BookmarkExporter"); }, async export(popup) { let win = popup.ownerGlobal, tn = popup.triggerNode; let node, pu = win.PlacesUtils, bm = pu.bookmarks; if (tn.nodeName == "treechildren") node = popup._view.selectedNode; else if (tn.id == "OtherBookmarks") node = {bookmarkGuid: bm.unfiledGuid, title: tn.getAttribute("label")}; else node = tn._placesNode || popup._view.result.root; let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init(win, win.PlacesUIUtils.promptLocalization.formatValueSync("places-bookmarks-export"), fp.modeSave); fp.appendFilters(fp.filterHTML); fp.defaultString = (node.title ? this.dps.sanitize(node.title) : "untitled") + ".html"; if (await new Promise(fp.open) == fp.returnCancel) return; let tree = await pu.promiseBookmarksTree(pu.getConcreteItemGuid(node), {includeItemIds: true}); tree.title = bm.getLocalizedTitle(tree); let bookmarks = {children: [ {root: "toolbarFolder"}, {root: "unfiledBookmarksFolder"}, {root: "bookmarksMenuFolder", children: [tree], guid: bm.menuGuid} ]}; new this.exporter(bookmarks).exportToFile(fp.file.path); }, observe(doc) { let popup = doc.querySelector("menupopup#placesContext"); if (!popup) return; let menuitem = (doc.createXULElement || doc.createElement).call(doc, "menuitem"); for(let args of Object.entries({ label: "Export folder to HTML", selection: "folder", "node-type": "folder", "selection-type": "single|none", id: "placesContext_exportFolder" })) menuitem.setAttribute(...args); menuitem.exporter = this; menuitem.addEventListener('click', () => { this.export(popup); // Übergibt das Popup-Element als Parameter an die Export-Funktion }); doc.getElementById("placesContext_openSeparator").before(menuitem); } }; Services.obs.addObserver(exporter, topic); Services.obs.addObserver(function quit(s, t) { Services.obs.removeObserver(quit, t); Services.obs.removeObserver(exporter, topic); }, "quit-application-granted"); })("chrome-document-loaded");
Habe noch einen kleinen Fehler in Zeile 52 beseitigt.
Das Skript ruft aber weiterhin NICHT den Speicherdialog auf!
Es wird folgender Fehler ausgeworfen:CodeUncaught (in promise) NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIFilePicker.init] export file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Testumgebung/chrome/scripts/##_1.js:25 observe file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Testumgebung/chrome/scripts/##_1.js:59
Deutet darauf hin, dass der erste Parameter von fp.init() nicht den erwarteten Typ hat.
Das bedeutet, dass win, der im aktuellen Code an fp.init(win, ...) übergeben wird, nicht den richtigen Fenstertyp darstellt.Der nsIFilePicker.init()-Aufruf erwartet ein nsIDOMWindow-Objekt als ersten Parameter, aber in deinem Fall ist win möglicherweise kein gültiges Fensterobjekt, was diesen Fehler verursacht.
Was ich damit anfangen soll, ich weiß es nicht.
Ich habe nicht die geringste Ahnung, was da geändert werden muss. -
milupo Speravir Nichts hat geholfen, der Speicherdialog erscheint nicht.
Normalerweise ist der Algorithmus wie folgt: Wenn Sie klicken, erscheint der Standard-Speicherdialog, der Name des exportierten Ordners wird automatisch in den Dateinamen eingefügt, z. B. Android.html. Die Exportdatei wird an dem vom Benutzer gewählten Ort gespeichert.
Wenn Sie die Exportdatei in einem Browser öffnen, sieht sie wie folgt ausDas haben wir uns, also ich jedenfalls, so gedacht!
Das Problem, wir sind keine Profis und wissen nicht, wie der "neue" String zum Aufruf des Speicherdialogs
richtig lauten muss. Es scheint so, als hätte Mozilla die API dazu geändert.
Nur wo und wie ich da an den Code ran komme, habe ich noch nie verstanden.Es ist zwar möglich per Browserwerkzeuge z.B. den Eintrag "Datei / Seite speichern unter ..." zu untersuchen,
aber wie ich an den zugrunde liegenden JavaScript-Code komme, bleibt mir ein Rätsel. -
-
-
-
-
schlingo Wenn Du der Meinung bist, dass meine Beiträge MSFT Bashing sind, darft Du natürlich Deine Meinung kund tun,
und diese auch als solche benennen.
ABER darum ging es gar nicht!und uns hier mit Deinem ständigen Gesülze verschonen
So etwas kannst Du Dir sonst wo hinstecken. Solche Äußerungen vergiften nur das miteinander.
ZitatZu: ... auf welcher Grundlage bestreitest Du dem Hersteller das Recht,
bei neuen Versionen die Systemvoraussetzungen anzupassen?Also so weit mir bekannt, sind Windows 11 23H2 und 24H2 keine neuen Betriebssystemversionen.
Es sind Updates einen älteren Windows 11.
Aber gut, Du bist der Meinung alles, was MS so treibt und tut ist toll und für Dich völlig in Ordnung.
Soll mir recht sein, somit erübrigt es sich für mich, mit Dir über Dinge, bei denen wir unterschiedlicher Meinung sind
auszutauschen. Zumal Du ja auch gar nicht sachlich bleiben kannst und mich schon des herabgewürdigt und beleidigt hast.
Ignoriere mich und meine Beiträge in Zukunft bitte, ich werde es mit Dir und Deinen Beiträgen genau so tun.
Lebe wohl und bleib gesund.Den Artikel auf heise kannst du ignorieren, da steht fast nur Unsinn drin. Zudem ist die Überschrift dumm und irreführend.
Was stimmt Deiner Meinung mit der Überschrift nicht?
Und auf einem Laptop habe ich ähnliches, was beschrieben wird, erlebt.
Entspricht der Artikel nicht Deiner Meinung, oder bezweifelst Du den Inhalt einfach mal so?Nachtrag: Du darfst natürlich antworten, aber ich bin hier jetzt raus.
Muss mich nicht ständig herumärgern, weil irgendwer meint mich beleidigen zu müssen
oder sonst irgendwie blöd angehen muss, nur weil ich eine andere Meinung habe,
oder Dinge einfach anders sehe..... zumal die von dir per Screenshot gezeigte Tabelle deiner Argumentation sogar eher widerspricht. Denn die Tabelle zeigt höhere Anforderungen für das Upgrade als für eine Neuinstallation,
Überlege doch bitte noch einmal!
Du installierst Windows 11 neu auf einem System nur mit TMP Version 1.2.
Das geht ohne Probleme.
Nun kommt ein "Sicherheitsupdate" bei dem das Setup aktiv wird,
und das Update wird gar nicht ausgeführt.
Ab diesem Zeitpunkt bleibt man auch einem ungepatchten System hängen!Und der Endanwender versteht das alles gar nicht, er nutzt doch Windows 11!
Welches doch bisher gut auf seinem System lief.Genau ein solches Szenario hatte ich auf einem Laptop von einer Bekannten.
Aber gut, ich werde zu den Themen "Windows" und Microsoft" mich in Zukunft hier nicht mehr äußern.
Es ist ja nicht erwünscht, dass man seine Meinung kundtut, wenn sie nicht der "Elite" hier on Board entspricht.
Ich danke Dir Sören Hentzschel für Deinen ruhigen und sachlichen Gedankenaustausch.
So mancher Einwand Deinerseits hat mich bei dem einen oder anderen Thema zum Nachdenken gebracht,
ich denke da z.B. an die Geschichte mit dem "Datenschutz" und den Empfehlungen von Kukletz,
und mich zum Umkehrschluss gebracht. Danke. -
schlingo Lieber Ingo, ich lasse mir von Dir nicht vorschreiben, worüber ich schreibe.
Wenn es Dich stört, überspringe meine Beiträge, ignoriere sie, oder blockiere mich,
aber unterlasse es, mich auf eine so doofe Art anzumachen. Danke.Zu. Hardwareanforderungen!
Eventuell habe ich mich doof ausgedrückt und nicht den aller besten Artikel dazu verlinkt.
Leider ist der wohl beste Artikel zu dem Thema hinter einer Paywall.Nach Upgrade auf Windows 11 teilweise keine Sicherheitsupdates erhältlichDas nahende Update-Ende für Windows 10 ist bekannt, nun erhält aber schon jetzt manches Windows 11 keine Sicherheitsupdates mehr. Wir erklären die Hintergründe.www.heise.deUnd auch wenn kommuniziert wird, dass diese Änderungen nur OEMs betreffen, stimmt das bedauerlicherweise so nicht!
Wer von Windows 7 oder Windows 10 kommt und per Upgrade zu Windows 11 gelangt ist,
den betreffen viele der Änderungen nicht! Jedoch legt das Setup da andere, weit höhere Anforderungen an.
Wer aber Windows 11 clean installieren möchte, kann unter Umständen vor Problemen stehen.
Die Hardwareanforderungen sind da nämlich niedriger, aber bei einem Update könnte da einem das Setup in die Parade fahren.
Und es gibt bei allem Überfluss noch so einige weitere Stolpersteine.
Ist im c't-Artikel sehr gut erklärt. Und nein, diese Stolpersteine betreffen eben nicht nur Nutzer "alter" Hardware!
Wobei, wenn ein PC, der zwei, drei Jahre auf dem Buckel hat, schon als "alt" gilt, ok.
Ich unterstelle MS mal so ganz pauschal, dass sie einfach wieder Geld mit Windows-Lizenzen in die Kasse spülen wollen!
Und nein, Windows 11 ist NICHT kostenlos!
Mit jedem neuen PC, wird auch eine Windows-Lizenz verkauft, die Geld in MS-Kasse spült.Nachtrag!
Kleine Fetzen aus dem c't-Artikel.ZitatWindows 11 läuft auch auf Rechnern schnell genug, die nur die weit geringeren Anforderungen der Vorgängerversion Windows 10 erfüllen. Die Änderungen für Windows 11 sind reine Willkür, um den Verkauf neuer PCs zu fördern. Weil auf den meisten PCs auch heute noch Windows vorinstalliert ist, bedeutet jeder PC-Verkauf zugleich zusätzliche Lizenzeinnahmen für Microsoft.
Das Setup-Programm
ZitatDieses Setup-Programm ist das, was direkt in die Falle führt. Denn es stellt nicht nur andere Anforderungen an die Hardware als jene, die Microsoft offiziell verkündet hat, sondern vor allem je nach Aufgabe unterschiedliche. Bei einer Neuinstallation gelten andere, und zwar geringere, als beim Aktualisieren einer bereits vorhandenen Installation. Und dann gibt es noch von Microsoft selbst eingebaute Registry-Hacks, mit denen Setup.exe noch geringere Anforderungen erfüllt wissen will.
Ähnlich beim Prozessor: Das Setup-Programm findet es bei einer Neuinstallation völlig ausreichend, wenn er zwei Kerne hat. Beim Aktualisieren hingegen besteht das Setup-Programm darauf, dass der Prozessor auch "kompatibel" ist, also in der aktuellen CPU-Liste aufgeführt ist. Einzig die seit 24H2 geltende Anforderung SSE4.2 gilt immer und lässt sich auch nicht umgehen, auch nicht mit Hacks.
-
Lesen ist eines, verstehen ein anderes.
Worauf genau beziehst Du Dich?
-
Was hat sich denn verändert in Sachen CPU seit dem Erscheinen von Windows 11?
Hier ist die Antwort zu finden: https://www.deskmodder.de/blog/2025/03/0…d-und-qualcomm/
Mh. und zu Deinem Einwand Sören Hentzschel "Nichts anderes gilt auch für jede andere Software auf der Welt." in Beitrag #542.
Ein BS ist nicht einfach irgendeine Software!
Ein BS ist die Grundlage, um überhaupt irgendwelche Software nutzen zu können.
Ich finde, dass das schon einen kleinen, aber entscheidenden Unterschied macht.
Aber für jemanden, der viel mit Sourcecode zu tun hat, mag Deine Interpretation natürlich vollkommen zutreffen. -
Was unter anderem für mich gegen W11 spricht ist, dass MS nach Gutdünken Hardwareanforderungen jederzeit,
und sie haben es ja gemacht, wieder ändern kann.Nichts anderes gilt auch für jede andere Software auf der Welt. Die Hardwareanforderungen eines Betriebssystems ändern sich aber nicht permanent und gerade als Windows-Nutzer braucht man sich über geänderte Hardwareanforderungen ja nun wirklich nicht beklagen. Microsofts Problem war viel mehr, dass sie viel zu lange damit gewartet haben, die Anforderungen mal auf ein halbwegs zeitgemäßes Niveau zu heben. Die Systemanforderungen von Windows waren immer extrem gering und haben sich vor Windows 11 über sehr viele Jahre kaum nennenswert verändert.
...
Und sie haben es schon wieder gemacht! Es sind Prozessoren rausgeflogen!
Und ich denke bei Supportzeitraum eher an XP und Windows 7,
die Vollkatastrophen Windows Vista und Windows 8 sowie 8.1 zähle ich nicht.
Windows XP von 25. Oktober 2001 bis 8. April 2014.
Windows 7 von 22. Oktober 2009 bis 14. Januar 2020.Und dies bei unveränderten Hardwareanforderungen.