1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. BrokenHeart

Beiträge von BrokenHeart

  • Firefox integriert inverse Bildersuche via Google Lens

    • BrokenHeart
    • 13. September 2025 um 21:50
    Zitat von .DeJaVu

    Derzeit würde ich auf diesem Wege keine sensiblen Bilder mit Daten anbieten.

    Was über diese Funktion auch nur sehr bedingt möglich ist! Du sendest über die Funktion ja eine Adresse zu einem öffentlich zugänglichen Bild an Google. Nur über Google Lens kannst du eigene (nicht veröffentlichte Bilddateien) hochladen.

    Es kürzt die umständlichere Methode ab, wobei man man Google Lens in einem Tab öffnen muss und dann ein Bild von einem anderen Tab dort per drag&drop hineinzieht. Benutze Google Lens häufiger und finde die neue Funktionalität ganz praktisch..

  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • BrokenHeart
    • 5. September 2025 um 20:33
    Zitat von Enterhaken

    Muss man das jetzt verstehen?!

    Dann dürfte es ziemlich sicher an der verwendeten Codierung des Skripts liegen. Es sollte immer UTF-8 verwendet werden.

    Schön, wenn dein Problem gelöst wurde. :thumbup:

  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • BrokenHeart
    • 5. September 2025 um 20:18

    Könntest du mal einen Screenshot(!) von deinem 'chrome'-Verzeichnis machen?

  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • BrokenHeart
    • 5. September 2025 um 20:11

    Was sagt denn die Konsole [STRG] + [SHIFT] + [J]? :/

    Da sollte dann so was stehen:

    20:07:55.171 Fri Sep 05 2025 20:07:55 GMT+0200 (Mitteleuropäische Sommerzeit) userChromeJS userChrome.loadScript: [UChrm]/Button_PersonalToolbar.uc.js

    Falls dort noch Fehlermeldungen bzgl. dieses Skripts auftauchen, bitte posten!

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 1. September 2025 um 10:42
    Zitat von 2002Andreas

    Nein, in beiden Versionen wird kein neuer Tab geöffnet.

    Bitte testen (Anpassung in Zeile 73):

    JavaScript
    // newTabButtonUndoTabList.uc.js
    
    "use strict";
    /* ******************************************************************************************************** */
    /* Beschreibung                                                                                             */
    /* Bei Rechtsklick auf die Neuen Tab Schaltfläche, wird im Kontextmenü,                                     */
    /* der Eintrag zum Wiederherstellen des zuletzt geschlossenen Tabs angezeigt.                               */
    /* Customized by BrokenHeart                                                                                */
    /*                                                                                                          */
    /* https://www.camp-firefox.de/forum/thema/112673/?postID=1223733#post1223733                               */
    /* https://www.camp-firefox.de/forum/thema/112673/?postID=1228286#post1228286                               */
    /*                                                                                                          */
    /* ******************************************************************************************************** */
    
    (function () {
    
        if (!window.gBrowser){
            return;
        }
        
        gBrowser.tabContainer.addEventListener('click', function (e) {
            if (e.originalTarget.id != 'tabs-newtab-button') return;
            switch (e.button) {
                case 1:
                    undoCloseTab(0);
                    break;
                case 2:
                    UCT.makePopup(e);
                    e.preventDefault();
                    break;
            }
        }, false);
    
    })();
    
    var UCT = {
        init: function () {
            var mp = document.createXULElement("menupopup");
            mp.id = "undo-close-tab-list";
            mp.addEventListener('popupshowing', function(event) {
    			UCT.onpopupshowing(event);
    		}, true);		
            mp.setAttribute("placespopup", true);
            mp.setAttribute("tooltip", "bhTooltip");
            mp.setAttribute("popupsinherittooltip", true);
            document?.getElementById("mainPopupSet")?.appendChild(mp);
        },
    
        makePopup: function (e) {
            if (SessionStore.getClosedTabCountForWindow(window) != 0) {
                document.getElementById("undo-close-tab-list").openPopupAtScreen(e.screenX +2, e.screenY +2, false);
            }
            else
            {
                console.log("--- Es gibt keinen Tab, der wiederhergestellt werden kann ---");
            }
        },
    
        onpopupshowing: function (e) {
            var popup = e.target;
            var m;
            while (popup.hasChildNodes())
                popup.removeChild(popup.firstChild);
    
            let undoItems = SessionStore.getClosedTabDataForWindow(window);
            undoItems.map(function (item, id) {
              //  var m = document.createXULElement('menuitem');
                m = document.createXULElement("menuitem");
                m.setAttribute('label', item.title);
                m.setAttribute('image', item.image);
                m.setAttribute('class', 'menuitem-iconic bookmark-item');            
                m.addEventListener('command', () => {
                        SessionStore.undoCloseTab(window,id);
                    }
                );
                popup.appendChild(m);
            });
    
            popup.appendChild(document.createXULElement("menuseparator"));
            m = document.createXULElement("menuitem");
            m.setAttribute("label", "Chronik in der Sidebar öffnen");
            m.setAttribute("image", "chrome://browser/skin/history.svg");
            m.setAttribute("class", "menuitem-iconic");
    		m.addEventListener('command', function() {
    			SidebarController.toggle('viewHistorySidebar');
    		}, true);		
            popup.appendChild(m);
        },
    };
    
    setTimeout(function() {
          UCT.init();
      },250);
    Alles anzeigen
  • Probleme mit einem "Hover" Popup und dem Script bookmark-count.uc.js

    • BrokenHeart
    • 21. August 2025 um 18:38
    Zitat von Horstmann

    Reden wir hier nur über Tooltips, oder was anderes?

    Nur über Tooltips ...

    ... und die Auswirkungen, die Änderungen am Code unter bestimmten Bedingungen haben können, wenn man dieses Tooltip-Problem behebt.

    Ich habe allerdings festgestellt, dass sich das Verhalten bei "überlangen Menü-Popups" nur dann zeigt, wenn sich dort mindestens ein Unterverzeichnis befindet. Daher ist das, was Mitleser vorgeschlagen hat, nämlich das Löschen der Zeile mit dem Eintrag itemPopup.hidden = true;, die momentan wohl beste Lösung. Man sollte dann aber auch itemPopup.hidden = false; (ein paar Zeilen darunter) ebenfalls löschen.

    Frage mich immer noch, wie die ganzen Manipulationen an den Lesezeichen-Menüs, Auswirkungen auf die Tab-Previews haben können? Habe es durch-debuggt und es wird zu keinem Zeitpunkt tab-preview-panel angesprochen :/. Alles Hexenwerk 👹.

  • Probleme mit einem "Hover" Popup und dem Script bookmark-count.uc.js

    • BrokenHeart
    • 21. August 2025 um 17:08
    Zitat von mkpcxxl

    Bis jetzt hatte ich kein solches Popup. Was meinst du genau mit überlangen Popups ?

    Ein Untermenü, welches mehr Einträge hat, als du auf deinem Bildschirm darstellen kannst, in dem also gescrollt werden muss (kleine Pfeile oben und unten), um sich alle Einträge anzuschauen.

  • Probleme mit einem "Hover" Popup und dem Script bookmark-count.uc.js

    • BrokenHeart
    • 21. August 2025 um 16:46
    Zitat von Mitleser

    , versuche mal Zeile 298

    auszukommentieren...

    Hatte ich auch schon getestet. Dann gibt es allerdings Probleme mit der Anzeige von überlangen Popus, in denen gescrollt werden muss, die sich dann beim nächsten Aufruf die letzte Position nicht mehr merken.:/

  • Kompatibilität Mehrzeilenskript/Addon Bar

    • BrokenHeart
    • 20. August 2025 um 20:52
    Zitat von Mira_Belle

    Also ich mache mir schon etwas arbeit und lasse nicht einfach eine KI ein Skrpt erstellen.

    Alles klar. War nicht meine Absicht deine Arbeit in Frage zu stellen oder zu diskreditieren. Die meisten Leute hier im Forum wollen einfach eine funktionierende Lösung für ihr Problem und das ist ja genau das, was du abgeliefert hast. Von diesem Punkt aus betrachtet, ist deine Herangehensweise dann natürlich auch in Ordnung.

    Hatte nur meine persönlichen Befindlichkeiten zu diesem Thema zum Besten geben wollen... ;)

  • Kompatibilität Mehrzeilenskript/Addon Bar

    • BrokenHeart
    • 20. August 2025 um 19:02
    Zitat von Mira_Belle

    Nein, bitte nicht antworten, brauchen nicht schon wieder eine Grundsatzdiskussion!

    Ich ziehe immer KI zurate und wer das nicht gut findet, soll einfach "meine" Skripte und Korrekturen meiden. Punkt.

    Eine Grundsatzdiskussion will ich auch nicht, zumal das Ergebnis hier wirklich gut ist (Einstellung wird sogar persistent in den Prefs gemacht!):thumbup:. Viele Sachen, die hier als "neues" JS-Skript oder CSS-Code erstellt wurden, hatten meist auch schon einige "Vordenker". Copy&Paste ist auch ok, solange man bei umfangreicheren Code den eigentlichen Urheber erwähnt, vor allem dann, wenn man nicht wirklich den gesamten Code, den man gepostet hat, auch wirklich verstanden hat.

    Wie gesagt: Ich habe kein Problem damit, aber ich habe für mich persönlich festgestellt, dass bei mir der Spaß an der ganzen Bastelei etwas zurückgegangen ist. Mir fehlt da irgendwie das Tüfteln und "Fachsimpeln" über den Code. :( Und außerdem ist es z.T. wirklich sinnlos bei so kleinen Aufgaben, sich noch die Mühe zu machen, sich da reinzufuchsen, weil bei solchen Dingen die KI oft schnellere und auch bessere Lösungen bietet. Bin ehrlich gesagt froh, dass ich in einer Zeit beruflich damit zu tun hatte, wo es dieses "Hilfsmittel" noch nicht gab ...

  • Wie lässt sich die Schrift in den Tab stets vertikal zentriert halten?

    • BrokenHeart
    • 14. August 2025 um 11:32
    Zitat von Mira_Belle

    Das Problem könnte längst keines mehr sein, wenn das CSS bereitgestellt werden würde!

    Vielleicht hat er eine ausgeprägte Form des "Code-Shamings" und glaubt, dass er dann für alle Zeiten deswegen stigmatisiert ist? :/

  • Was hört Ihr gerade?

    • BrokenHeart
    • 9. August 2025 um 23:24
    Zitat von Webmark

    Jesus He Knows Me (Genesis)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 8. August 2025 um 17:28

    2002Andreas Hast du die Änderung aus #111 in deinem Skript übernommen?

    args = args.split(" ").map(a => a.replace("$1", openURL));  //Split bei Leerzeichen 

    Ich glaube, man sollte das bestehende OpenWith-Skript aber so umschreiben, dass man die Parameter in einzelnen Strings übergeben kann. Dann hat man das ganze Problem mit dem "Aufdröseln" mittels split() nicht mehr...:/

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 8. August 2025 um 14:02
    Zitat von lenny2

    Das Kontextmenü funktioniert also, aber ein Klick darauf erstellt ein neues Profil in %AppData%.

    Das dürfte an dem Leerzeichen bei "User Data" liegen. split(" ") (in Zeile 124 bei #111) trennt ja einfach alle Übergabeargumente, wenn er ein Leerzeichen findet. Ob es reicht \"User\ Data\" zu schreiben, weiß ich nicht. Vielleicht müsste man den split-Parameter anpassen?! Ein Komma zwischen den Übergabeargumenten würde sich anbieten, also so split(","). Dann müssten aber alle bisherigen Aufrufe entsprechend auch angepasst werden...

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 8. August 2025 um 11:23
    Zitat von lenny2

    "Ungoogled Chromium": "D:\\Ungoogled Chromium Portable\\chrome.exe<>$1 --user-data-dir="User Data"

    Zitat von lenny2

    , wird das Skript nicht mehr im Kontextmenü angezeigt.

    Wahrscheinlich weil das Skript schon abgestürzt ist, nachdem dieser syntaktisch falsche String eingefügt wurde. Du hast 3(!) Anführungszeichen. Das schließende Anführungszeichen hast du vergessen.

    Außerdem müssen die beiden Anführungszeichen um "User Data" 'escaped' werden, also sieht der korrekte String dann so aus:

    "Ungoogled Chromium":    "D:\\Ungoogled Chromium Portable\\chrome.exe<>$1 --user-data-dir=\"User Data\""

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 7. August 2025 um 13:38
    Zitat von 2002Andreas

    Egal wie ich das hier eintrage:

    Ich kann es nicht genau erkennen, aber es sieht in deinem Screenshot so aus, als wenn sich keine Leerzeichen zwischen den Argumenten befinden. Diese sind aber zwingend notwendig.

    Wie gesagt, ob es so beim Firefox klappt kann ich nicht sagen, aber das Skript läuft jetzt einwandfrei. Ich habe noch etliche Parameter übergeben und alle werden im Chrome-Browser richtig interpretiert und übernommen. Wenn Parameter beim Firefox nicht laufen, dann müsste man speziell für den Firefox Extra-Anpassungen einbauen, was ich jetzt aber auch nicht vorhabe. Aber du sagst ja, dass du für deinen Aufruf schon eine Alternativlösung hast...

    Edit: Ok, Sören war schneller ;)

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 7. August 2025 um 12:48

    Mira_Belle Danke für deine Antwort.

    Ich habe schon verstanden, dass du diese "Anpassung" gar nicht (mehr) brauchst. Bloß, wenn jemand sagt, dass etwas bei ihm/ihr nicht funktioniert - wie auch noch in deinem letzten Posting - dann hake ich natürlich nach, da es hier einwandfrei funktioniert.

    Ich hoffe mal, du hast wirklich das Skript aus #111 benutzt bzw. die Zeile in deinem ursprünglichen(!) Skript geändert und nicht den "Workaround" aus #108. Der funktionierte nämlich wirklich nicht, deswegen hatte ich den Code ja auch zwischenzeitlich gelöscht.

    Ich kann hier mit meinen Firefox-Installationen nicht vernünftig testen, weil ich schon so viele Sachen (u.a. profile.ini, install.ini) angepasst habe, dass das Ergebnis nicht aussagekräftig wäre und ich auch schon mein Profil damit zerschossen hatte. Deshalb teste ich mit Chrome und da funktioniert die kleine Anpassung. Und wenn die Parameterübergabe in Chrome funktioniert, sollte es natürlich auch mit einer Firefox-Installation klappen.

    Zitat von 2002Andreas

    Lässt es sich einstellen/eintragen, dass man ein bestimmtes Profil damit dann aufruft?

    Prinzipiell schon. Ich konnte es nur bedingt testen, aber die einzelnen Aufrufparameter werden zumindest korrekt als Array extrahiert und an die Process-Funktion weitergegeben. Nur bin ich mir nicht sicher, ob der Aufruf mit der Seite als erstem Parameter in diesem Fall so erlaubt ist...:/

    Weiter bin ich nicht gekommen, weil sich dann, wegen meiner merkwürdigen Firefox-Installationen, kein zusätzlicher Firefox bei mir öffnen lässt. Werde irgendwann mal drei nicht-portable Standard-Installationen erstellen, damit ich eben solche Sachen in Zukunft auch testen kann. :(

    Du musst aber beim Übergabestring die inneren Anführungszeichen um den Profilnamen 'escapen' -> \", also so:

    JavaScript
    // ...
    "Firefox Clean":    "C:\Program Files\Mozilla Firefox\firefox.exe<>$1 -P \"Clean\" ",
    //...
  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 6. August 2025 um 23:00
    Zitat von Mira_Belle

    Oweh! =O

    Jetzt bin aber erst recht raus!

    :/?

    Ok, jetzt weiß ich immer noch nicht, was bei dir nicht funktioniert, aber egal. Ja, warten wir ab, ob es Lenny hilft, oder nicht...

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 6. August 2025 um 22:43
    Zitat von Mira_Belle

    Aber leider auch nichts.

    Was funktioniert denn nicht :/?

    Wie gesagt, beim Firefox ist entscheidend, welche Einstellungen für das Öffnen von Links gesetzt sind (siehe oben).

    Außerdem gibt es auch noch diese Flags in 'about:config':

    JavaScript
    user_pref("browser.link.open_newwindow",3); 
    user_pref("browser.link.open_newwindow.restriction",0); 
    user_pref("browser.link.open_newwindow.override.external",3); 

    Das kann das Verhalten ebenfalls beeinflussen...

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • BrokenHeart
    • 6. August 2025 um 21:59

    Habe es jetzt nur mit meinem unverbastelten Google Chrome getestet, da bei meinen portablen Feuerfüchschen zu viele Einstellungen geändert wurden.

    Bitte nochmal testen (geändert hat sich nur Zeile 124):

    JavaScript
    // ==UserScript==
    // @name			OpenWith
    // @description		Fügt dem Kontextmenü ein Menü hinzu, zum Öffnen der aktuelle Seite und eines ausgewählten Links in einem anderen Browser.
    // @description		und eines ausgewählten Links in einem anderen Browser.
    // @version			1.2.1a  63+
    // @author			y2k
    // @include			main
    // @charset			UTF-8
    // @namespace		http://tabunfirefox.web.fc2.com/
    // @note			Anwendungssymbol anzeigen
    // @note			als .uc.js Script umgeschrieben
    // ==/UserScript==
    (function() {
    "use strict";
    
    if (location != 'chrome://browser/content/browser.xhtml') return;
    
    /*
    	Vor Verwendung, Pfad auf eigene Umgebung ändern(\ wird durch \\ ersetzt)
    	Zum Übergeben von Argumenten, wie folgt vorgehen:
    	C:\\Program Files\\Internet Explorer\\iexplore.exe<>$1 Argument Argument
    	※ $1 wird in URL umgewandelt
    */
    const BrowserPath = {
    	"Google Chrome":	"C:\\Programme\\Google\\Chrome\\Application\\chrome.exe<>$1 -new-window",
    	"Microsoft Edge":	"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
    };
    
    const FlatMenu = false;
    
    const OpenWith = {
    	start: function() {
    		const cm = document.getElementById("contentAreaContextMenu");
    		cm.addEventListener("popupshowing", function(e) {
    			if (e.target == this) { OpenWith.onpopup(e); }
    		}, false);
    	},
    
    	createMenu: function() {
    		if (this.pageItem || this.linkItem) {
    			return;
    		}
    
    		const contextMenu = document.getElementById("contentAreaContextMenu");
    		const pageMenu = this.$C("menu", { id: "context-open-with-page", label: "Seite öffnen mit:" });
    		contextMenu.insertBefore(pageMenu, contextMenu.querySelector(":scope > #context-bookmarkpage, :scope > #context-savepage"));
    
    		const linkMenu = this.$C("menu", { id: "context-open-with-link", label: "Link öffnen mit:" });
    		contextMenu.insertBefore(linkMenu, contextMenu.querySelector(":scope > #context-sep-open"));
    
    		this.pageItem = this.createMenuItem(pageMenu, "openPage", FlatMenu? "Seite öffnen mit $1 ":"  $1");
    		this.linkItem = this.createMenuItem(linkMenu, "openLink", FlatMenu? "Link öffnen mit $1 ":"  $1");
    	},
    	
    	createMenuItem: function(menu, method, format) {
    		const frag = document.createDocumentFragment();
    		
    		let menuitem = [];
    		for (let i of Object.keys(BrowserPath)) {
    			const item = this.$C("menuitem", {
    				label:	format.replace("$1", i),
    				class:	"menuitem-iconic",
    				image:	"moz-icon:file:///" + BrowserPath[i].split("<>")[0] + "?size=16",
    				value:	JSON.stringify([ method, i ]),
    			});
    			item.addEventListener("command", this, false);
    
    			frag.appendChild(item);
    			menuitem[menuitem.length] = item;
    		}
    		
    		if (!FlatMenu) {
    			const menupopup = this.$C("menupopup");
    			menupopup.appendChild(frag);
    			menu.appendChild(menupopup);
    			menuitem = [ menu ];
    		}
    		else {
    			const parent = menu.parentNode;
    			parent.insertBefore(frag, menu);
    			parent.removeChild(menu);
    		}
    		
    		return menuitem;
    	},
    
    	$C: function(tag, attrs) {
    		const elem = document.createXULElement(tag);
    		if (attrs) {
    			for (let key of Object.keys(attrs))
    				elem.setAttribute(key, attrs[key]);
    		}
    		return elem;
    	},
    
    	onpopup: function(e) {
    		this.createMenu();
    		
    		const isHtml = /^(https?|file):/.test(gBrowser.currentURI.spec);
    		const pageItemHidden = !isHtml || gContextMenu.onLink || gContextMenu.onTextInput;
    		const linkItemHidden = !isHtml || !gContextMenu.onLink || gContextMenu.onTextInput;
    		
    		const pageItem = this.pageItem;
    		for (let i = 0, l = pageItem.length; i < l; i++) {
    			pageItem[i].hidden = pageItemHidden;
    		}
    		const linkItem = this.linkItem;
    		for (let i = 0, l = linkItem.length; i < l; i++) {
    			linkItem[i].hidden = linkItemHidden;
    		}
    	},
    
    	handleEvent: function(event) {
    		if (event.type === "command") {
    			const [ method, key ] = JSON.parse(event.originalTarget.getAttribute("value"));
    			const url = method === "openPage"? gBrowser.currentURI.spec: gContextMenu.linkURL;
    			this.launch(BrowserPath[key], url);
    		}
    	},
    	
    	launch: function(browserPath, openURL) {
    		let [ path, args ] = browserPath.split("<>");
    		if (args) {
    			args = args.split(" ").map(a => a.replace("$1", openURL));  //Split bei Leerzeichen 
    		} else {
    			args = [ openURL ];
    		}
    				
    		const file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    		file.initWithPath(path);
    		
    		const process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    		process.init(file);
    		process.run(false, args, args.length, {});
    	},
    };
    
    OpenWith.start();
    
    })();
    Alles anzeigen

Unterstütze uns!

Jährlich (2025)

101,9 %

101,9% (662,48 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon