1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. camp-firefox.de
  2. Forum
  3. Firefox für den Desktop (Windows, Apple macOS, Linux)
  4. Individuelle Anpassungen

SaveTo.uc.js

  • universum123
  • 12. April 2020 um 12:42
  • Erledigt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Büssen
    Beiträge
    1.780
    • 13. April 2020 um 18:22
    • #61

    Jetzt hast du mich aber wieder mal erwischt!

    In den besagten Profilen hatte ich "Jedes Mal nachfragen..............." eingestellt. :(

    Das hatte ich einfach nicht auf dem Schirm - deshalb danke ich dir!

    Manchmal ist der Firefox doch nicht unterentwickelt - sondern denkt gut mit.

    Da sollte ich mir mal ein Beispiel dran nehmen.

    Also, nochmal vielen Dank! :)

    Gruß,
    D. Büssen

    Firefox 138.0.4 + Nightly 140 WIN 10 - 64 bit)

  • Online
    milupo
    Reaktionen
    191
    Beiträge
    15.468
    • 13. April 2020 um 18:26
    • #62

    Gern geschehen.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • FuchsFan
    Reaktionen
    18
    Beiträge
    3.023
    • 14. April 2020 um 11:09
    • #63
    Zitat von BrokenHeart

    Mit dem geänderten Aufruf funktioniert's jetzt.

    Ja, BrokenHeart, obwohl aborix hier RE: SaveTo.uc.js am Schluss der Zeile ein Semikolon gesetzt hat, und du es nicht übernommen hast. Auch Andreas hat es dann so verwendet. Ich habe nun mal beide Varianten probiert, es funktioniert .

    Wie wichtig ist jetzt dieses Satzzeichen am Ende der Zeile?

    Grüße vom FuchsFan

  • BrokenHeart
    Reaktionen
    79
    Beiträge
    2.395
    • 14. April 2020 um 11:51
    • #64

    Semikolons sind in Javascript - von wenigen Ausnahmen abgesehen - optional und werden falls nötig automatisch eingefügt.

    Das ist etwas was mir an Javascript auch prinzipiell nicht gefällt, dass es sehr wenige Dinge gibt, die ich explizit angeben muss. Am schlimmsten ist das implizite Umwandeln von einem Typ in einen anderen. Alles ist irgendwie 'Objekt' und kann ohne Probleme zugewiesen und kopiert werden und alles kann ich verkürzt darstellen (als Beispiel '=>'-Aufruf). Ich glaube, wenn man wütend mit der Faust auf der Tastatur herum hämmert kommt immer noch interpretierbarer Code dabei heraus.;)

    Da ich aber noch JS-Anfänger bin, will ich mich mit meiner Kritik nicht zu weit aus dem Fenster lehnen, sonst krieg ich von Sören und aborix geschimpft und das wäre für mich psychisch sehr belastend...:(

    In diesem Fall ist es aber ein Kopierfehler meinerseits gewesen. Ich benutze immer Semikolons (komme aus der C/C++ Ecke).

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • FuchsFan
    Reaktionen
    18
    Beiträge
    3.023
    • 14. April 2020 um 12:00
    • #65
    Zitat von BrokenHeart

    wenn man wütend mit der Faust auf der Tastatur herum hämmert kommt immer noch interpretierbarer Code dabei heraus

    Das hat einen Lacher bei mir ausgelöst.8)

    Manchmal braucht man nur eine Klammer, usw. vergessen, und schon ist Panik angesagt. Deswegen war ich hier überrascht, dass es trotzdem funktioniert. Ich habe aber auch das Semikolon gesetzt, weil ich aborix vertraue.

    Grüße vom FuchsFan

  • Sören Hentzschel
    Administrator
    Reaktionen
    745
    Artikel
    1.065
    Beiträge
    36.675
    • 14. April 2020 um 12:09
    • #66
    Zitat von BrokenHeart

    Da ich aber noch JS-Anfänger bin, will ich mich mit meiner Kritik nicht zu weit aus dem Fenster wagen, sonst krieg ich von Sören und aborix geschimpft

    Die wenigsten mögen die dynamische Typisierung von JavaScript. Dazu muss man aber auch sagen: Die Sprache wurde von Mozilla-Gründer Brendan Eich in gerade mal einer Woche erfunden. Auch wenn sich seit dem viel getan hat, die grundlegenden Prinzipien der Sprache sind natürlich geblieben. Im Web haben wir leider das Problem, dass Abwärtskompatibilität über allem steht, insofern wird sich das auch nicht mehr bessern, weil das Web ansonsten an zu vielen Stellen nicht mehr funktioniert.

    Zitat von BrokenHeart

    Ich glaube, wenn man wütend mit der Faust auf der Tastatur herum hämmert kommt immer noch interpretierbarer Code dabei heraus. ;)

    In dem Punkt muss ich allerdings widersprechen. Es benötigt bereits ein kleiner Fehler an einer Stelle und schnell ist es passiert, dass die gesamte Anwendung nicht mehr funktioniert.

    Kostenlose Erweiterungen für Firefox
    NEU: @s_hentzschel auf Mastodon

  • BrokenHeart
    Reaktionen
    79
    Beiträge
    2.395
    • 14. April 2020 um 16:18
    • #67
    Zitat von Sören Hentzschel

    Die Sprache wurde von Mozilla-Gründer Brendan Eich in gerade mal einer Woche erfunden. Auch wenn sich seit dem viel getan hat, die grundlegenden Prinzipien der Sprache sind natürlich geblieben.

    Ich weiß jetzt natürlich nicht wie das 'Ur-Javascript' aussah und was erst später alles dazu gekommen ist, aber es wundert mich schon , dass man so was in nur einer Woche auf die Beine stellen kann. Natürlich ist die Sprache nicht einfach aus dem Nichts entstanden, sondern man hatte sich ja ganz offensichtlich an den C-Sprachen orientiert. Vor allem, wenn man bedenkt, dass Javascript ( zumindest in der heutigen Form) fast alle Programmiersprachen-Paradigmen abdeckt (objektbasiert, funktional, etc.) und es im Gegensatz zu stark/statisch typisierten Sprachen für den Interpreter schwerer und weitaus komplizierter ist daraus lauffähigen Code zu erzeugen, ist es um so erstaunlicher, dass man so etwas in so kurzer Zeit entwickeln kann. Der JS-Interpreter muss bei den vielen Möglichkeiten in JS seinen Programmierwillen auszudrücken, schon (etwas übertrieben) fast KI-Fähigkeiten haben, um das gewünschte Ergebnis zu liefern. Das stell ich mir nicht sonderlich einfach vor. Dagegen ist z.B. ein C-Compiler , den es ja dank seiner Einfachheit immer als erstes für neue Systeme gibt, ein rechter schlichter Ansatz...

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Sören Hentzschel
    Administrator
    Reaktionen
    745
    Artikel
    1.065
    Beiträge
    36.675
    • 14. April 2020 um 16:44
    • #68
    Zitat von BrokenHeart

    aber es wundert mich schon , dass man so was in nur einer Woche auf die Beine stellen kann

    Man kann das auch nicht, ein Brendan Eich ist aber nicht man. :D

    Kostenlose Erweiterungen für Firefox
    NEU: @s_hentzschel auf Mastodon

  • 2002Andreas
    Moderator
    Reaktionen
    621
    Beiträge
    64.933
    • 26. August 2022 um 16:24
    • #69

    Hallo @ all...

    das Script funktioniert noch insofern, dass die Dateien im angegebenen Ordner gespeichert werden.

    JavaScript
    // ==UserScript==
    // @include       chrome://mozapps/content/downloads/unknownContentType.xhtml
    // @charset       UTF-8
    // @version       Fx78+
    // ==/UserScript==
    (function() {
        
        const Cu = Components.utils;
        if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
        if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
    
        setTimeout(function() {
             saveTo()
        }, 200);
    
    
        function saveTo() {
            // Config
            var dirArray = [
    ['C:\\Users\\Andi\\Downloads\\Test\\zum entpacken','Auspacken'],
    ['C:\\Users\\Andi\\Documents', 'Dokumente'],
    ['C:\\Users\\Andi\\Pictures\\Screenshots', 'Screenshots'],
    ['D:\\Telefonrechnungen'],
    //["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
    //["" + FileUtils.getDir('UChrm', ['SubScript']).path + "", "SubScript"],
    ['F:\\', 'F:'],
    ['G:\\', 'G:'],
    ];
            let button = document.getElementById("unknownContentType").getButton("cancel");
            let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
            var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
                
            saveTo.classList.toggle("dialog-button");
            saveTo.label = "Speichern in..";
            saveTo.type = "menu";
            
            var css =`
            
            hbox.dialog-button-box button.dialog-button menupopup {
            color: white !important;
            background: black !important;
    }
    hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover{
        background: red !important;
        color: white !important;
    }
    
    hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
        padding-left: 6px !important;
        margin-left: 1px !important;
    }
    hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text{
        padding-right: 5px !important;
        padding-left: 4px !important;
    }
    
    `;
    
            var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
            var uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
            sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
            
            dirArray.forEach(function(dir) {
                var [name, dir] = [dir[1], dir[0]];
                var mi = document.createXULElement("menuitem");
                var item = saveToMenu.appendChild(mi);
                item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
                item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
                item.setAttribute("class", "menuitem-iconic");
                item.addEventListener("command", function() {
                    var file = new FileUtils.File(dir.replace(/\\/g, '\\\\') + '\\\\' + (document.getElementById('locationtext') ? document.getElementById('locationtext').value : document.getElementById('location').value));
                     dialog.mLauncher.saveDestinationAvailable(file);
                    dialog.onCancel = function() {};
                    close();
                });
            });
            
        
            
        }
    }());
    Alles anzeigen

    Was nicht mehr funktioniert, ich kann den Ordner nicht mehr über das Download Popup öffnen:

    Kann das jemand bestätigen?

    Vielen Dank für jegliche Hilfe.

    Mit freundlichem Gruß
    Andreas
    Mein Laptop  Meine Add-ons

  • grisu2099
    Reaktionen
    79
    Beiträge
    2.593
    • 26. August 2022 um 16:29
    • #70
    Zitat von 2002Andreas

    Kann das jemand bestätigen?

    Nein. Hier ploppt sofort ein Explorer-Fenster auf... :/

  • 2002Andreas
    Moderator
    Reaktionen
    621
    Beiträge
    64.933
    • 26. August 2022 um 16:31
    • #71
    Zitat von grisu2099

    Hier ploppt sofort ein Explorer-Fenster auf.

    Kannst du mir bitte mal dein Script geben, evtl. habe ich ja eine alte Version.

    Auch in einem Testprofil funktioniert es hier nicht :/

    Mit freundlichem Gruß
    Andreas
    Mein Laptop  Meine Add-ons

  • Sören Hentzschel
    Administrator
    Reaktionen
    745
    Artikel
    1.065
    Beiträge
    36.675
    • 26. August 2022 um 16:32
    • #72

    Gibt es Fehlermeldungen in der Konsole?

    Kostenlose Erweiterungen für Firefox
    NEU: @s_hentzschel auf Mastodon

  • 2002Andreas
    Moderator
    Reaktionen
    621
    Beiträge
    64.933
    • 26. August 2022 um 16:33
    • #73
    Zitat von Sören Hentzschel

    Gibt es Fehlermeldungen in der Konsole?

    Hallo Sören, das sieht hier so aus:

    Mit freundlichem Gruß
    Andreas
    Mein Laptop  Meine Add-ons

  • grisu2099
    Reaktionen
    79
    Beiträge
    2.593
    • 26. August 2022 um 16:35
    • #74
    Zitat von 2002Andreas

    Kannst du mir bitte mal dein Script geben, evtl. habe ich ja eine alte Version.

    Gerne doch. Vielleicht hab ich ja auch noch eine alte Version am Start... :/

    CSS
     // ==UserScript==
    // @include chrome://mozapps/content/downloads/unknownContentType.xhtml
    // @charset UTF-8
    // @version Fx78+
    // ==/UserScript==    Version 2002Andreas
    
    
    (function() {
    
    
        const Cu = Components.utils;
        if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
        if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
    
    
        var css = `
        hbox.dialog-button-box button.dialog-button menupopup {
            background: rgb(40,40,42) !important;
            }
        hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
            background: green !important;
            }
        hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
            padding-left: 15px !important;
            }
        hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
            padding-right: 15px !important;
            padding-left: 14px !important;
            padding-top: 3px !important;
            padding-bottom: 3px !important;
        }`;
        var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        var uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
        sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
    
        setTimeout(function() {
        saveTo()
        }, 200);
    
    
        function saveTo() {
            // config
            var dirArray = [
                //['C:\\Users\\xxx\\Documents', 'Dokumente'],
                //['C:\\Users\\xxx\\Pictures', 'Bilder'],
                //['C:\\Users\\xxx\\Music', 'Musik'],
                //['C:\\Users\\xxx\\Videos', 'Videos'],
                ["" + FileUtils.getDir('UChrm', []).path + "", "Ordner chrome"],
                //["" + FileUtils.getDir('UChrm', ['SubScript']).path + "", "SubScript"],
                ["C:\\", "C:"],
                ["D:\\aaustesten", "D: aaustesten"],
                ["E:\\aaa-neu", "E: aaa-neu"],
                ["F:\\", "F:"],        
                ["F:\\BILDER", "F: BILDER"],        
                ["F:\\VIDEOS", "F: VIDEOS"],
                ["G:\\", "G:"],
                ["H:\\", "H:"],
                ["I:\\", "I:"],
                ["J:\\", "J:"]
                ];
    
    
            let button = document.getElementById("unknownContentType").getButton("cancel");
            let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
            var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
            saveTo.classList.toggle("dialog-button");
            saveTo.label = "Speichern in…";
            saveTo.type = "menu";
            dirArray.forEach(function(dir) {
                var [name, dir] = [dir[1], dir[0]];
                var mi = document.createXULElement("menuitem");
                var item = saveToMenu.appendChild(mi);
                item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
                item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
                item.setAttribute("class", "menuitem-iconic");
                item.addEventListener("command", function() {
                    var file = new FileUtils.File(dir.replace(/\\/g, '\\\\') + '\\\\' + (document.getElementById('locationtext') ? document.getElementById('locationtext').value : document.getElementById('location').value));
                    dialog.mLauncher.saveDestinationAvailable(file);
                    dialog.onCancel = function() {};
                    close();
                });
            });
        }
    }());
    Alles anzeigen

    Ergänzung: Auch im Nightly funktioniert es...

  • Sören Hentzschel
    Administrator
    Reaktionen
    745
    Artikel
    1.065
    Beiträge
    36.675
    • 26. August 2022 um 16:37
    • #75

    2002Andreas Der Fehler kommt offensichtlich aus einem anderen Script (areaMenu gibt es weder in deinem Script noch im Firefox-Code). Wenn du das Script mal deaktivierst (siehe Dateiname im Screenshot), wie sieht's dann aus?

    Kostenlose Erweiterungen für Firefox
    NEU: @s_hentzschel auf Mastodon

  • 2002Andreas
    Moderator
    Reaktionen
    621
    Beiträge
    64.933
    • 26. August 2022 um 16:41
    • #76
    Zitat von Sören Hentzschel

    Wenn du das Script mal deaktivierst

    Gemacht, und das Script dann in eine Testdatei eingefügt:

    Zitat von grisu2099

    Gerne doch.

    Danke, aber auch damit öffnet sich der Ordner nicht.

    Mit freundlichem Gruß
    Andreas
    Mein Laptop  Meine Add-ons

  • grisu2099
    Reaktionen
    79
    Beiträge
    2.593
    • 26. August 2022 um 16:52
    • #77

    Dann bin ich mit meinem Latein leider am Ende...

  • 2002Andreas
    Moderator
    Reaktionen
    621
    Beiträge
    64.933
    • 26. August 2022 um 16:53
    • #78
    Zitat von grisu2099

    leider am Ende...

    Danke trotzdem für deine Unterstützung :) :thumbup:

    Neues Profil, nur mit diesem einen Script:

    Und der Ordner lässt sich auch da nicht öffnen.

    Mit freundlichem Gruß
    Andreas
    Mein Laptop  Meine Add-ons

  • BrokenHeart
    Reaktionen
    79
    Beiträge
    2.395
    • 26. August 2022 um 18:14
    • #79

    Fehler kann ich bestätigen. Eigentlich sollte ja das Öffnen des Verzeichnisses unabhängig von der Art des Downloads sein, zumal er die Datei ja richtig abspeichert und vor allem auch vom Download-Panel öffnen kann. Also ist FireFox auch im Download-Panel das Verzeichnis bekannt. Warum es es nicht tut? Keine Ahnung! :/

    ...müsste man vielleicht mal mit dem Debugger ran.

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • FuchsFan
    Reaktionen
    18
    Beiträge
    3.023
    • 26. August 2022 um 18:15
    • #80

    2002Andreas

    Solltest Du dafür eine Lösung haben, so bitte ich um Nachricht. Auch hier wird der Ordner nicht geöffnet, ist schon eine Weile so.

    Grüße vom FuchsFan

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

Ähnliche Themen

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

    • Endor
    • 12. Mai 2015 um 14:19
    • Individuelle Anpassungen
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Mastodon
Zitat speichern