Matthias Apsel: event-handler für "nachgeschobene" Inhalte

Hallo alle,

Ich lasse mir in diesem Forum die Benutzernamen von Benutzern mit eigenen Avateren ausblenden. Dazu nutze ich ein JavaScript

$(document).ready(function(){
  $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
})

in Verbindung mit dem entsprechenden CSS

.root .registered-user:not(.ohne-bild) > a:not(.user-link) {
	display: none;
}

Leider wirkt das JavaScript nicht auf Beiträge, die ohne Reload in die Seite nachgeschoben werden. Gibt es ein passendes Event, was ich belauschen könnte?

vor dem Absenden noch mal ins Wiki schauen: Nix gefunden.

Bis demnächst
Matthias

--
Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
  1. Hallo Matthias,

    Leider wirkt das JavaScript nicht auf Beiträge, die ohne Reload in die Seite nachgeschoben werden. Gibt es ein passendes Event, was ich belauschen könnte?

    Das CForum emited eigene Events für diesen Fall. Du kannst auf folgende Events reagieren:

    cforum.client.on('thread:create', function(event) {});
    cforum.client.on('message:create', function(event) {});
    cforum.client.on('thread:read', function(event) {});
    cforum.client.on('message:read', function(event) {});
    

    LG,
    CK

    1. Hallo Christian Kruse,

      Das CForum emited eigene Events für diesen Fall.

      Aha. Was man nicht alles machen kann, wenn man es denn kann.

      Du kannst auf folgende Events reagieren:

      cforum.client.on('thread:create', function(event) {});
      cforum.client.on('message:create', function(event) {});
      cforum.client.on('thread:read', function(event) {});
      cforum.client.on('message:read', function(event) {});
      

      message:create feuert, wenn irgendeine Nachricht erstellt wurde? Also auch bei einem neuen Thread?

      Bis demnächst
      Matthias

      --
      Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
      1. Hallo Matthias,

        message:create feuert, wenn irgendeine Nachricht erstellt wurde? Also auch bei einem neuen Thread?

        Nein. Du musst auf alle Events hören :)

        LG,
        CK

        1. Hallo Christian,

          message:create feuert, wenn irgendeine Nachricht erstellt wurde? Also auch bei einem neuen Thread?

          Nein. Du musst auf alle Events hören :)

          das ist nicht logisch: Ein neuer Thread impliziert doch eine neue Nachricht!

          So long,
           Martin

          --
          Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
          - Douglas Adams, The Hitchhiker's Guide To The Galaxy
          1. Hallo Martin,

            das ist nicht logisch: Ein neuer Thread impliziert doch eine neue Nachricht!

            Natürlich ist das logisch. Nur aus einem anderen Gesichtspunkt.

            LG,
            CK

    2. Hallo Christian Kruse,

      Das CForum emited eigene Events für diesen Fall. Du kannst auf folgende Events reagieren:

      cforum.client.on('thread:create', function(event) {});
      cforum.client.on('message:create', function(event) {});
      cforum.client.on('thread:read', function(event) {});
      cforum.client.on('message:read', function(event) {});
      

      Hm. Es sieht so aus, als wäre das nicht zielführend. Wahrscheinlich weil die Nachrichten nicht auf meinem Client erstellt wurden?

      Jedenfalls erzeugt dieses JavaScript nicht die entsprechende Klasse.

      cforum.client.on('message:create', function(event) {
        $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
      })
      

      Bis demnächst
      Matthias

      --
      Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
      1. Hallo Matthias,

        Hm. Es sieht so aus, als wäre das nicht zielführend. Wahrscheinlich weil die Nachrichten nicht auf meinem Client erstellt wurden?

        Unwahrscheinlich. DOM ist DOM.

        Jedenfalls erzeugt dieses JavaScript nicht die entsprechende Klasse.

        cforum.client.on('message:create', function(event) {
          $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
        })
        

        Mir ist noch nicht so ganz klar, was du damit erreichen möchtest.

        LG,
        CK

        1. Hallo Christian Kruse,

          Mir ist noch nicht so ganz klar, was du damit erreichen möchtest.

          Siehe OP. Wenn ich die Seite reloade, funktioniert das einwandfrei, nicht aber, wenn neue Beiträge ohne reload dazugeladen werden.

          Es ist allerdings auch nur ein kosmetisches Problem.

          Bis demnächst
          Matthias

          --
          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
          1. Hallo Matthias,

            Mir ist noch nicht so ganz klar, was du damit erreichen möchtest.

            Siehe OP.

            Ja, ne, ich sprach davon, was du dir bei dem Code gedacht hast ;) Wie kommst du z.B. auf das „Missing?” Der Alt-Text der Avatare enthält doch gar kein Missing bei Usern mit Avataren?

            LG,
            CK

            1. Hallo,

              Ja, ne, ich sprach davon, was du dir bei dem Code gedacht hast ;) Wie kommst du z.B. auf das „Missing?” Der Alt-Text der Avatare enthält doch gar kein Missing bei Usern mit Avataren?

              Beispiel Benutzer Rundi: registriert, aber Standard-Avatar. -> Name soll nicht ausgeblendet werden, da Vergechslungswefahr.

              Gruß
              Kalk

              1. Hallo Tabellenkalk,

                Beispiel Benutzer Rundi: registriert, aber Standard-Avatar. -> Name soll nicht ausgeblendet werden, da Vergechslungswefahr.

                Ah ja, jetzt hats klick gemacht, danke. Hab eine Nachtschicht hinter mir, musste bis 02:irgendwas arbeiten, bin noch etwas langsam, danke für die Nachsicht ;-)

                Ich spiele da heute Abend mal mit rum, prinzipiell sollte das funktionieren, mehr muss ich debuggen.

                LG,
                CK

                1. Hallo Christian Kruse,

                  Ich spiele da heute Abend mal mit rum, prinzipiell sollte das funktionieren, mehr muss ich debuggen.

                  Danke. In einer Dringlichkeitsskala von 0 bis 10 liegt das so ungefähr bei -7.

                  Bis demnächst
                  Matthias

                  --
                  Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                  1. Tach!

                    In einer Dringlichkeitsskala von 0 bis 10 liegt das so ungefähr bei -7.

                    Sag sowas nicht, das landet dann bei CK wegen eines Out-of-Range-Errors gar nicht erst in der Liste.

                    dedlfix.

                  2. Hallo,

                    In einer Dringlichkeitsskala von 0 bis 10 liegt das so ungefähr bei -7.

                    das erinnert mich an eine Stammtischrunde mit alten Kollegen, wo wir irgendwann auf amerikanische Schauspielerinnen zu sprechen kamen, und wer welche toll findet. Da habe ich Vanessa Hudgens erwähnt und zugegeben, wenn ich Schönheit auf einer Skala von 1 bis 10 bewerten sollte, dann würde sie von mir eine 12 bekommen.
                    Wenn sie will, kann sie auch lasziv-verrucht. Trotzdem hinreißend ...

                    So long,
                     Martin

                    --
                    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
                    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
                    1. Hallo Der Martin,

                      In einer Dringlichkeitsskala von 0 bis 10 liegt das so ungefähr bei -7.

                      Hab ich ja auch nur geklaut. Der Text ist mir übrigens zu großen Teilen auf den Leib geschrieben.

                      das erinnert mich an eine Stammtischrunde mit alten Kollegen, wo wir irgendwann auf amerikanische Schauspielerinnen zu sprechen kamen, und wer welche toll findet. Da habe ich Vanessa Hudgens

                      Kenn ich nicht. Zumindest nicht dem Namen nach.

                      Sie sieht aber tatsächlich bezaubernd aus. Auch dem Bild nach kann ich sie nicht zuordnen.

                      Wikipedia: Machete Kills ist der einzige der Filme, der mir was sagt.

                      Bis demnächst
                      Matthias

                      --
                      Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                      1. Hallo,

                        von Farin Urlaub geklaut

                        So jung wie der ist, hat der es aber auch nicht erfunden...

                        Gruß
                        Kalk

                        1. Hallo Tabellenkalk,

                          Tags zu erstellen, macht Spaß, gelle?

                          Bis demnächst
                          Matthias

                          --
                          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                      2. Hi,

                        das erinnert mich an eine Stammtischrunde mit alten Kollegen, wo wir irgendwann auf amerikanische Schauspielerinnen zu sprechen kamen, und wer welche toll findet. Da habe ich Vanessa Hudgens

                        Kenn ich nicht. Zumindest nicht dem Namen nach.

                        naja, persönlich kenn ich sie natürlich auch nicht.

                        Sie sieht aber tatsächlich bezaubernd aus.

                        :-)

                        Wikipedia: Machete Kills ist der einzige der Filme, der mir was sagt.

                        Den hab ich auch mal gesehen, aber schnell wieder aus meinem Gedächtnis verdrängt. War nicht so mein Ding. Übrigens: Wenn es um Filme geht, ist meine bevorzugte Anlaufstelle die Internet Movie Database.

                        Und wenn ich da so die Liste ihrer Filme durchsehe, fällt mir High School Musical auf (dem Namen nach, die Filmreihe ist bekannt, ich habe aber nie einen Teil davon gesehen), Bandslam ist eine herrliche Romanze mit hohem Taschentuch-Faktor[1], Beastly auch (aber mehr im Märchen- und Fantasy-Bereich angesiedelt), und Frozen Ground ist ein harter Krimi.

                        So long,
                         Martin

                        --
                        Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
                        - Douglas Adams, The Hitchhiker's Guide To The Galaxy

                        1. "My name is Sa5m. The 5 is silent." ↩︎

                        1. Hallo Der Martin,

                          Wikipedia: Machete Kills ist der einzige der Filme, der mir was sagt.

                          Den hab ich auch mal gesehen, aber schnell wieder aus meinem Gedächtnis verdrängt. War nicht so mein Ding.

                          Das ist, glaube ich, der 2. Teil. Ich hatte den ersten (Machete) gesehen und fand den eigentlich inhaltlich gar nicht so schlecht. Ähnlich wie auch die „Stirb Langsam“-Filme.

                          Bis demnächst
                          Matthias

                          --
                          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                          1. Hi,

                            Wikipedia: Machete Kills ist der einzige der Filme, der mir was sagt.

                            Den hab ich auch mal gesehen, aber schnell wieder aus meinem Gedächtnis verdrängt. War nicht so mein Ding.

                            Das ist, glaube ich, der 2. Teil.

                            ja, stimmt. Ich hab den ersten vor ein paar Jahren komplett gesehen, vom zweiten nur noch ein Stück. Ist mir irgendwie zu brutal.

                            Ich hatte den ersten (Machete) gesehen und fand den eigentlich inhaltlich gar nicht so schlecht. Ähnlich wie auch die „Stirb Langsam“-Filme.

                            Naja, vielleicht habe ich mich nicht weit genug auf die Handlung und die Figuren eingelassen, aber die Machete-Filme mit Danny Trejo haben bei mir den Eindruck hinterlassen, als wolle man Brutalität nur um ihrer selbst willen zeigen. Bruce Willis alias John McClane verkörpert dagegen den knallharten Cop, der zwar auch alle Register des Kampfes zieht, aber in Wirklichkeit eigentlich nur seine Ruhe haben will. Das spricht mich eher an.

                            Ciao,
                             Martin

                            --
                            Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
                            - Douglas Adams, The Hitchhiker's Guide To The Galaxy
                            1. Hallo,

                              euch ist klar, dass Machete nicht ernst gemeint ist? ;) Das kommt aus Planet Terror, eine Homage an die Grindhouse-Filme der 70er. In diesem Fall werden die Exploitation-Filme auf dem arm genommen.

                              Und wenn man das aus diesem Gesichtspunkt betrachtet, dann versteht man IMHO auch die übermäßige Gewalt ;)

                              LG,
                              CK

                              1. Hi Christian,

                                euch ist klar, dass Machete nicht ernst gemeint ist? ;) Das kommt aus Planet Terror, eine Homage an die Grindhouse-Filme der 70er. In diesem Fall werden die Exploitation-Filme auf dem arm genommen.

                                das war mir nicht klar und erklärt einiges.

                                Und wenn man das aus diesem Gesichtspunkt betrachtet, dann versteht man IMHO auch die übermäßige Gewalt ;)

                                Okay, das hat was. Davon gefällt es mir aber immer noch nicht besser. ;-)

                                So long,
                                 Martin

                                --
                                Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
                                - Douglas Adams, The Hitchhiker's Guide To The Galaxy
                                1. Hallo Martin,

                                  Davon gefällt es mir aber immer noch nicht besser. ;-)

                                  Muss es ja auch nicht :)

                                  Der nächste Film heisst übrigens gerüchteweise „Machete kills in Space” 😂

                                  LG,
                                  CK

                              2. Hallo Christian Kruse,

                                euch ist klar, dass Machete nicht ernst gemeint ist? ;)

                                Nun ja, dass es keine Dokumentation ist, ist irgendwie einsichtig.

                                In diesem Fall werden die Exploitation-Filme auf dem arm genommen.

                                Dafür hat der Film dann aber tatsächlich eine umfangreiche Handlung.

                                Bis demnächst
                                Matthias

                                --
                                Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                                1. Hallo Matthias,

                                  In diesem Fall werden die Exploitation-Filme auf dem arm genommen.

                                  Dafür hat der Film dann aber tatsächlich eine umfangreiche Handlung.

                                  Ja, der Herr Rodriguez ist wirklich gut in dem was er tut, Planet Terror war ähnlich genial :) Inklusive gefakedem Filmriss in der Mitte des Films.

                                  LG,
                                  CK

                              3. Hallo

                                euch ist klar, dass Machete nicht ernst gemeint ist? ;)

                                Danke! Wenn ich mir Filme anschaue, finde ich keine Stelle, an der nicht klar ist, dass das eine comicartige, völlig überzeichnete Karikatur des Genres ist. Wie man das auch nur ansatzweise ernst nehmen kann …

                                Mögen muss man das dehalb natürlich nicht. Literweise spritzendes Blut, aus dem Hubschrauber gestoßene Menschen und abgeschnittenen Köpfe sind nicht Jedermanns Sache.

                                Tschö, Auge

                                --
                                Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
                                Wolfgang Schneidewind *prust*
            2. Hallo Christian Kruse,

              Ja, ne, ich sprach davon, was du dir bei dem Code gedacht hast ;) Wie kommst du z.B. auf das „Missing?” Der Alt-Text der Avatare enthält doch gar kein Missing bei Usern mit Avataren?

              Aber der Alt-Text ist Missing für angemeldete Nutzer ohne Avatar. Es sei denn jemand nennt seinen Avatar „Missing.“

              Bis demnächst
              Matthias

              --
              Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
      2. Hallo Matthias,

        Hm. Es sieht so aus, als wäre das nicht zielführend. Wahrscheinlich weil die Nachrichten nicht auf meinem Client erstellt wurden?

        Jedenfalls erzeugt dieses JavaScript nicht die entsprechende Klasse.

        cforum.client.on('message:create', function(event) {
          $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
        })
        

        So, ich habe jetzt mal genauer geschaut. Ist klar, dass das nicht funktioniert, aus mehreren Gründen:

        • cforum.client existiert noch nicht zu dem Zeitpunkt, wo das User-JS ausgeführt wird
        • die Reihenfolge ist nicht unbedingt definiert; es kommt vor, dass meine Event-Handler erst später ausgeführt werden
        • ich verwende zur <del>Verhind</del><ins>Umgehung</ins> einer Race Condition window.setTimeout

        Ich habe mir überlegt, dass es gar nicht mal so sinnvoll ist, dass hier auf internen Events gehorcht wird und habe deshalb kurzerhand eine öffentliche Event-API erstellt. Es gibt jetzt ein Event update, dass immer getriggert wird, wenn das Forum Daten ändert und dann spezifischere Events in den einzelnen Situationen. Folgender JS-Code geht:

        function mapselFoo(ev) {
          $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
        }
        
        $(document).ready(function() {
          mapselFoo();
          cforum.events.on('update', mapselFoo);
        });
        

        Es gibt noch: update:message (wird gefeuert, wenn eine neue Nachricht eintrifft), update:thread (wird gefeuert wenn ein Thread erstellt wird oder wenn ein Thread sich im Index ändert), update:mail (wird geschmissen wenn eine neue Mail eintrifft) sowie update:notifications (wird gefeuert wenn eine neue Notification eintrifft).

        LG,
        CK

        1. Hallo Christian Kruse,

          Folgender JS-Code geht:

          function mapselFoo(ev) {
            $('.user-link > img[alt=Missing]').parent().parent().addClass('ohne-bild');
          }
          
          $(document).ready(function() {
            mapselFoo();
            cforum.events.on('update', mapselFoo);
          });
          

          Dankeschön.

          Bis demnächst
          Matthias

          --
          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        2. Hallo Christian Kruse,

          Ich habe mir überlegt, dass es gar nicht mal so sinnvoll ist, dass hier auf internen Events gehorcht wird und habe deshalb kurzerhand eine öffentliche Event-API erstellt. Es gibt jetzt ein Event update, dass immer getriggert wird, wenn das Forum Daten ändert

          Ließe sich das auch benutzen, um zugeklappte Threads beim Eintreffen neuer Beiträge zu öffnen?

          Bis demnächst
          Matthias

          --
          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
          1. Hallo Matthias,

            Ließe sich das auch benutzen, um zugeklappte Threads beim Eintreffen neuer Beiträge zu öffnen?

            Das passiert doch schon? ;-)

            Das Problem besteht derzeit nur, wenn der Thread nicht auf der Hauptseite ist. Da muss ich nochmal ran.

            LG,
            CK

            1. Hallo Christian Kruse,

              Ließe sich das auch benutzen, um zugeklappte Threads beim Eintreffen neuer Beiträge zu öffnen?

              Das passiert doch schon? ;-)

              Dann muss ich das mal beobachten. Derzeit sind alle Threads eingeklappt. Ich bin gespannt.

              Bis demnächst
              Matthias

              --
              Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
            2. Hallo Christian Kruse,

              Das Problem besteht derzeit nur, wenn der Thread nicht auf der Hauptseite ist.

              Und damit auch, wenn ich "gelesene Threads ausblenden" aktiviere ...

              Bis demnächst
              Matthias

              --
              Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
              1. Hallo Matthias,

                Das Problem besteht derzeit nur, wenn der Thread nicht auf der Hauptseite ist.

                Und damit auch, wenn ich "gelesene Threads ausblenden" aktiviere ...

                Ja :-)

                LG,
                CK