Erweiterung media.windows-media-foundation.enabled

  • Ich habe jetzt die Erweiterung mit dem SDK Version 1.15 gebaut. Das klappt in den Grundzügen ganz gut, und ein paar Dateien habe ich halt nachträglich bearbeitet. Aber mit der Sprachdateien klappt das alles nicht so ganz. Du sprichst in Beitrag 15 von einem Ordner namens "locales" es gibt aber nur den Ordner "locale" (evtl. ein Schreibfehler?) Ich habe einfach den Ordner "locale" genommen und die erste Sprachvariable wird auch geladen wenn ich sie in main.js definiere. Schön und gut, aber in einem en-us Firefox sollte ja die zweite Sprachvariable geladen werden... das ist doch der Sinn der ganzen Sache oder? Tut sie aber nicht
    Sowohl in de.json als auch in en-US.json steht testweise drin:

    Code
    {
    "LABEL_1": "Quick Windows Foundation Codecs deutsch",
    "LABEL_2": "Quick Windows Foundation Codecs englisch"
    }

    die main.js sieht so aus:

    Aber jetzt kommt der Teil der mich absolut verzweifeln lässt. :|
    Erstens weiß ich nicht an welche Stelle bei mir genau der Code

    Code
    let appInfo = Cu.import('resource://gre/modules/Services.jsm').Services.appinfo;
    appInfo.os

    hin muss, geschweige denn wie ich den genau definiere. :traurig: also dass für Win halt der Schalter "media.windows-media-foundation.enabled" benutzt wird, für Linux der Schalter "media.gstreamer.enabled" und für mac möglicherweise wieder ein anderer Schalter (den ich nicht weiß). Dazu kommt dann auch noch, dass ich nicht weiß wie ich zwei Schalter gleichzeitig aktiviere/deaktiviere, da im Nightly die Erweiterung nur noch funktioniert wenn man gleichzeitig den Schalter "media.directshow.enabled" aktiviert/deaktiviert. Ich sitze nun schon ca 4h dran <:( wahrscheinlich liegt es daran dass mir halt doch die Grundkenntnisse bzgl. der wichtigesten Code Funktionen fehlen und die „Trial and Error“ -Methode halt auch irgendwann ihre Einschränkungen hat.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Bezüglich Lokalisierung, schau dir dieses Tutorial von Mozilla an:
    https://addons.mozilla.org/en-US/develope…rials/l10n.html

    Bezüglich let appInfo = Cu.import('resource://gre/modules/Services.jsm').Services.appinfo, hat dir Beitrag #19 nicht geholfen? Dort mache ich etwas ziemlich Ähnliches wie das, was du brauchst. Ich lese statt dem Betriebssystem den Programmnamen aus, das kommt aus demselben JavaScript-Modul. Ich hab das in eine Funktion gepackt, die mir das zurückgibt und später rufe ich diese Funktion auf und vergleiche ganz einfach in einer if-Abfrage, ob diese Funktion einen bestimmten Wert zurückgibt und reagiere entsprechend darauf (durch Abbruch der Funktion). In Pseudocode: Wenn die Funktion Windows zurückliefert, dann lege diesen Schalter um, wenn die Funktion Linux zurückliefert, dann legen den anderen Schalter um.

    Für Mac brauchst du erstmal nicht nach einem Schalter suchen, Firefox für Mac kann das noch nicht.

    Wenn du Grundkenntnisse sammeln möchtest, ich hab selbst auch Tutorials dazu geschrieben:

    How To: Simple Firefox-Erweiterung in wenigen Minuten erstellen dank Add-on SDK
    How To: XPCOM-Zugriff und INI-Parser mit dem Firefox Add-on SDK
    How To: JavaScript-Module (*.jsm) und clipboard-API mit dem Add-on SDK
    How To: Einstellungen mit den Add-on SDK umsetzen

    Ich leg meine Hand nicht dafür ins Feuer, dass nach zwei Jahren noch alles zu 100 Prozent passt, aber vielleicht hilft es beim Verstehen. Meine Tutorials (zumindest die ersten drei) erklären vereinfachte Versionen der Add-ons, die ich entwickelt habe, erklären also quasi realen Code.

  • kleine Erfolgsmeldung: Das mit den Sprachdateien hat geklappt. :wink:
    zweiter Schritt soll jetzt sein dass die beiden Einträge media.windows-media-foundation.enabled und media.directshow.enabled gleichzeitig geändert werden.

    Meinen ursprünglichen Code


    änderte ich in:


    da ist aber mit Sicherheit was falsch, denn jetzt wird der Button zur Erweiterung gar nicht mehr angezeigt und ich kann somit auch nix umstellen. Was ist falsch daran? :-???

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • mit Hilfe jetzt auch geschafft dass beide Schalter umgelegt werden:

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • mit sehr sehr viel Hilfe haben wir einen Code hin bekommen. Problem ist aber dass das Auslesen vom Betriebssystem irgendwie nicht funktioniert. Unter Linux werden mir jetzt die zwei Einträge die für Windows sind unter about:config eingetragen und auf true oder false gesetzt anstatt dass unter Linux der richtige Schalter media.gstreamer.enabled umgestellt wird.


    Was läuft hier falsch? :-???

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • diesmal selbst raus gefunden :lol:
    statt:

    Code
    if(appInfo.os=='Linux')


    muss es heißen

    Code
    if(Services.appinfo.OS == 'Linux')


    jetzt klappts unter Windows und Linux richtig.

    Edit:

    Code
    if(appInfo.OS == 'Linux')

    funktioniert jetzt auch, muss man auch erstmal wissen dass OS groß geschrieben werden muss :roll:

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Besser spät als nie wissen, was man eigentlich programmiert. :D Da ich im in deiner Signatur verlinkten Erweiterungs-Beitrag sehe, dass du NoScript nutzt, hoffe ich, dass JavaScript durch den Erfolg auch einiges an Sympathie gewinnen konnte, denn es ist einfach eine unheimlich mächtige und wichtige Sprache. Immer mehr Webseiten benötigen das, Firefox selbst verwendet zu großen Teilen JavaScript (man sieht es an der Downloads-API: alte APIs werden gegen neue in JavaScript geschriebene APIs ausgetauscht), Add-ons sowieso und von Firefox OS brauch ich wohl gar nicht erst anzufangen. Und wenn man sieht, wie ausnahmslos alle Browserhersteller seit Jahren permanent und ohne müde zu werden für JavaScript optimieren, dürfte klar sein, dass irgendwann nichts mehr ohne JavaScript gehen wird. Mozilla hat vor wenigen Tagen erst den nächsten Meilenstein angekündigt, man ist nur noch um den Faktor 1.5 langsamer als native Programmiersprachen, mittlerweile laufen Spiele im Browser, welche es früher nur für Spielekonsolen hätte geben können beziehungsweise als installierbares Spiel auf dem Computer. Und nun hast du auch JavaScript geschrieben. :) JavaScript ist aus Programmierersicht echt nicht die tollste Sprache, überhaupt nicht, aber es ist eben die Sprache, die sich durchgesetzt hat und an der kein Weg mehr vorbeiführen wird.

  • gegen, JavaScript an sich und generell habe ich auch nichts, denke dass sie durchaus ihre Berechtigung hat. Aber auf den meisten Webseiten nervt sie mich und ich finde es unnötig, wenn ich so manche Seite sehe die ohne JS gar nicht mehr benutzbar ist dann verlasse ich diese meistens. Ich achte bei meiner eigenen Webseite auch darauf dass diese ohne JavaScript benutzbar ist, inklusive Navigation. Das Spiele im Browser mit JavaScript laufen ist toll (auch wenn ich selbst nicht spiele) und ist für mich auch ein Unterschied zu "normalen" Webseiten, auf denen man halt einfach irgendwo hin navigieren möchte. Und wenn ich es wirklich für berechtigt halte, dass eine Seite JS benötigt, dann mach ich halt einen Klick auf den NoScript Button und schalte es frei. :)

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Die Sache ist halt die: Selbst für einfache Webseiten benötigst du JavaScript, wenn du heutigen Anforderungen noch gerecht werden möchtest. Dazu möchte ich das Beispiel der Navigation aufgreifen. Eine Navigation sollte ohne JavaScript funktionieren, da stimme ich zu. Aber selbst von einer einfachen Seite erwarte ich in Jahr 2013, dass diese auch auf kleinen Bildschirmen benutzt werden kann, hier sind wir beim Thema Responsive Designs. Wir reden hier ja von ganz verschiedenen Ausgabemedien - Smartphones, Tabletes, Phablets oder auch einfach kleine Fenster auf dem Bildschirm, weil ich immer mehr Leute auch einen größeren Bildschirm nutzen sehe, wo Fenster dann halt nicht mehr maximiert werden. Und das führt zwangsläufig fast immer zum Punkt Navigation, weil da eine für klassiche Desktop-Systeme mit dem Browser auf Vollbild gedachte Navigation fast nie (konzeptionell) funktioniert. Da ist es dann eine gängige Praxis, beispielsweise die Navigations-Struktur aus dem DOM per JavaScript auszulesen und entsprechend in einem Dropdown-Menü abzubilden, oder in einer Off-Canvas-Navigation (also sowas wie die Facebook-App auf dem Smartphone hat). Das ist eine grundlegende Aufgabe und dafür braucht es halt JavaScript. Daher gibt es bei meinen Kunden keine Seite, welche nicht auch JavaScript einsetzt, und wenn es "nur" eine Tierarztpraxis ist. Kein Kunde bekommt von mir eine Webseite, welche nicht responsive in Abhängigkeit auf den zur Verfügung stehenden Platz die Gegebenheiten bestmöglich nutzt. Und schon sind wir beim Punkt: Fast jede Webseite benötigt wirklich JavaScript, wenn man die Seiten für möglichst viele Menschen benutzbar machen möchte. Und es gibt viele weitere Beispiele, wo es sinnvoll ist. Wie zum Beispiel Validierungen von Eingabefeldern ohne die Webseite komplett an den Server zu schicken und die Seite komplett neu laden zu müssen (kostet nur Zeit und ist nicht sehr anwenderfreundlich), Bilder erst bei Bedarf laden oder verschiedene Bildgrößen in Abhängigkeit der Bildschirmauflösung laden (spart Zeit und auf mobilen Geräten vor allem häufig reales Geld beim Benutzer, denn Volumen kostet da häufig immer noch Geld), Präsentation von Inhalten (z.B. Slideshow, sieht meistens gut aus und kann Platz sparen und damit den wichtigen Inhalt besser hervorheben), usw. Und bei komplexeren Aufgaben ist das sogar geschickt: JavaScript wird ja beim Client ausgeführt und nicht auf dem Server. Mit den Optimierungen der Browserhersteller können bestimmte Aufgaben dadurch wesentlich schneller ausgeführt werden und den Server entlasten. Also in den allermeisten Fällen hat der Einsatz von JavaScript schon Sinn. Für mich macht der Whitelisting-Ansatz daher überhaupt keinen Sinn, sondern höchstens der Blacklistung-Einsatz, wenn es mal wirklich nervt und nicht notwendig ist.

    Für mich ist der eigentliche Punkt Folgendes: JavaScript bietet wunderbare Möglichkeiten, die das Leben sowohl für Entwickler als auch für den Endwender (siehe oben) so wundervoll machen können. Und die Möglichkeit, JavaScript zu deaktivieren, macht das kaputt. Es ist einfach schade, wenn man als Entwickler nicht voraussetzen kann, dass Javascript immer aktiviert ist. Und am Ende ist das eine Kostenfrage. Wer bezahlt die Optimierungen für Nutzer, welche JavaScript nicht aktiviert haben? Oder müssen am Ende 95% der Nutzer mit Nachteilen leben, weil man wegen der anderen fünf Prozent bestimmte Verbesserungen weglässt beziehungsweise gezwungen ist, Dinge schlechter umzusetzen?

    Aber ich merke gerade, dass ich ordentlich abdrifte, das ist eigentlich ein eigenes Thema. Bin schon ruhig. :D

  • An dieser Stelle von mir noch die Vorwarnung, dass in ein paar Monaten Anpassungen notwendig werden. ;) Und zwar verwendest du ja die Widget-API. Und die wird zusammen mit dem Australis-Design deprecated, heißt in einer der darauffolgenden Versionen entfernt werden. Dafür gibt es dann eine neue API, aber die gibt es jetzt noch nicht, dürfte aber sehr bald in Firefox Nightly landen.