Div. Skripte funktionieren im aktuellem Nightly nicht mehr

  • Hallo zusammen,
    sagt mal gibt es schon eine aktualisierte Version von Appmenu.uc.js?

    JavaScript
    ...

    Nein.
    Das ist das ursprüngliche Skript, auf dem "mein" Appmenu_neu2.uc.js-Skript basiert.

    Ich beiß' mir daran gerade die Zähne aus.

    Zwar habe ich einige Korrekturen vorgenommen, aber das Skript funktioniert noch nicht so wie gewünscht!
    Die Schaltflächen Neustart und auch Beenden funktionieren, ABER ...
    die Ordnerstuckaturen sind total durcheinander und die "Aufrufe" sind auch noch ohne Funktion.
    Ich bin noch drann:!:

    Mit <3lichem Gruß

    Mira

  • Wenn die Funktion selbst nicht verändert werden soll, kann man das Element nutzen, welche die Methode zurück gibt. Weist man den Rückgabewert einer Variablen zu, kann man darauf dann addEventListener ausführen.

    Wenn man sich das gesamte Skript anschaut, ist es dann nicht tatsächlich besser '$C()' (warum dieses überflüssige '$'-Zeichen?) zu verändern und dort den EventListener hinzuzufügen? :/ Sonst müsste man ja zigmal Variablen definieren und jedes Mal einen Eventlistener erstellen. So kann man direkt in der Funktion das gerade erzeugte Element nutzen und es gibt den Code für den Eventlistener für alle Elemente nur einmal.


    Endor

    Normalerweise würde ich es ja testen, aber mit dem 'userCSSLoader' ist mir das ehrlich gesagt zu viel Aufwand.

    Hier die geändert $C()-Funktion (ab Zeile 630)

    Das ist ungetestet und kann sowohl syntaktische, als auch semantische Fehler aufweisen, was sogar sehr wahrscheinlich ist:!:

    Original:

    JavaScript
    function $C(name, attr) {
        var el = document.createXULElement(name);
        if (attr) Object.keys(attr).forEach(function(n) { el.setAttribute(n, attr[n]) });
        return el;
    }

    Neu:

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Sobald ich es bei allen so ändere geht das Script aber nicht mehr.

    Zeile 62:

    JavaScript
    UCL.editUserCSS(\'userChrome.css\');
    
    /* wird zu => */
    
    UCL.editUserCSS('userChrome.css');

    Ähnlich Zeile 71. Und nach Zeile 108 fehlt das Komma.

    Das sind erst einmal nur die Syntax-Fehler, die behoben werden müssen, damit das Script erfolgreich ausgeführt werden kann. Und insgesamt zähle ich immer noch drei Inline-Listener.

    Bei: onclick: "if (event.button == 1) UCL.rebuild()"

    Gleiches Prinzip:

  • Ich hab's, ich fress 'en Besen! Dharkness   FuchsFan

    Schaut Euch Zeilen 226, bzw, die darauffolgenden an.
    Dann Zeilen 282, bzw, die darauffolgenden an.
    Und Zeilen 319 bis 327:!:

    Nun solltet Ihr Eure Versionen anpassen können.

    Mit <3lichem Gruß

    Mira

  • Gleiches Prinzip:

    Vielleicht steh ich hier mal wieder auf dem Schlauch, aber ist es nicht sowas , oder ist das zu einfach gedacht?
    Also dem gewünschten Element weist man die gewünschte Funktion zu, via addEventListener?

    In letzter Zeit hab ich etwas an meiner Website rumgepfuscht, und addEventListener war ziemlich simpel in der Anwendung, eigentlich wie von Dir beschrieben.

  • Hallo 2002Andreas, das Script mit dem Wechsel von webm auf mp4 ist klasse, habe nämlich das gleiche Problem, dass meine Fernseher mit webm nicht umgehen können. Es funktioniert soweit auch nur ist bei mir der Button leer (was ja auch klar ist, da im Script ja die Pfade auf deinem PC angegeben sind). Könntest du mir bitte die beiden svg Grafiken, welche du dafür benutzt posten ?

    Wäre toll.

    Gruß

    Michael

  • Vielleicht steh ich hier mal wieder auf dem Schlauch, aber ist es nicht sowas , oder ist das zu einfach gedacht?
    Also dem gewünschten Element weist man die gewünschte Funktion zu, via addEventListener?

    Mir ist ehrlich gesagt nicht klar, ob ich deine Frage richtig verstehe. Aber ja, es geht in diesem Thema um genau diese Inline-Eventlistener, die mittels addEventListener-Aufrufe ersetzt werden.

  • Mir ist ehrlich gesagt nicht klar, ob ich deine Frage richtig verstehe. Aber ja, es geht in diesem Thema um genau diese Inline-Eventlistener, die mittels addEventListener-Aufrufe ersetzt werden.

    Meine Frage ist offensichtlich, ob die Lösung generell so einfach ist wie von dir beschrieben, und von mir vermutet.:/

    Und falls ja, warum dann hier jedes Script einzeln diskutiert wird, falls eine solche Lösung generell für betroffene Scripts angewendet werden kann.;)

  • In den meisten Fällen ist es so einfach. Aber das heißt nicht, dass sich jeder damit leicht tut, das von einem Fall auf den nächsten zu übertragen, insbesondere wenn die Scripts teilweise unterschiedliche Methoden und Schreibweisen verwenden und man selbst nicht regelmäßig mit JavaScript arbeitet und daher nicht einordnen kann, was das Gleiche bewirkt und was etwas anderes. ;)

  • In den meisten Fällen... ;)

    Ja, ganz oft war es wirklich nicht so schwer, wenn ich nichts verwechselt habe, aber das Script hat mich Nerven gekostet.
    Und mit JavaScript habe ich jetzt ja nicht wirklich etwas zu tun! Nur für den Firefox komme ich damit in Berührung
    und Ahnung habe ich davon auch nicht wirklich, so auf einer Scala von 1 bis 10, würde ich mich bei zwei oder drei einordnen.

    Mit <3lichem Gruß

    Mira

  • Wenn man sich das gesamte Skript anschaut, ist es dann nicht tatsächlich besser '$C()' (warum dieses überflüssige '$'-Zeichen?) zu verändern und dort den EventListener hinzuzufügen? :/ Sonst müsste man ja zigmal Variablen definieren und jedes Mal einen Eventlistener erstellen. So kann man direkt in der Funktion das gerade erzeugte Element nutzen und es gibt den Code für den Eventlistener für alle Elemente nur einmal.

    Die Frage hatte ich übersehen. Man kann natürlich auch diesen Weg gehen. Dann muss man halt in dieser Funktion den Namen der Eigenschaft prüfen und für die on*-Eigenschaften den Listener ensprechend setzen statt das Attribut. Dann darf man nur nicht vergessen, den Namen dynamisch anzupassen, denn das on gehört ja nicht in den Event-Namen und der erste Buchstabe muss klein sein.

    Wieso das $ verwendet wird, weiß ich nicht. Wenn ich so etwas sehe, vermute ich als erstes, dass der ursprüngliche Entwickler aus der jQuery-Entwicklung kommt und das daher hat. Aber vielleicht hatte der Entwickler auch eine ganz eigene Konvention, wann er das Dollar-Zeichen verwendet. Das müsste man den Entwickler mal fragen. Schlimmer finde ich, dass Funktionen als $, $A und $C benannt sind. Schön kurz, ja, aber nicht lesbar an den Stellen, an denen die Funktionen verwendet werden.