molily: JavaScript-Ergänzung: Neue Antworten anzeigen

Hallo zusammen,

Ein Feature hat mir schon lange bei diesem Forum gefehlt: Eine Liste am Anfang der Forumshauptseite mit Links zu neuen Antworten, als ungelesenen Beiträgen, die sich auf meine Beiträge beziehen.

Nun habe ich mir ein JavaScript für die Benutzerspezifische Ansicht geschrieben, welches nach dem Laden des Dokuments die Threadliste nach neuen Antworten durchwühlt und diese oben verlinkt:

http://molily.de/temp/forum.js

Vielleicht ist euch dieses Script ebenfalls hilfreich, die Benutzung wird im Script erklärt.
(Bitte kopiert euch das Script auf euren eigenen Webspace oder z.B. auf http://localhost/, falls ihr es verwendet.)

Zusammen mit meinem Benutzer-Stylesheet sieht das dann z.B. so aus:

Das Script fügt, wenn es neue Antwort gibt, die orangene Meldungsbox ein. Das Element, an das die Box angehängt wird, kann im Script festgelegt werden, die Formatierung muss im Benutzer-Stylesheet erfolgen. Weiteres dazu steht im Script selbst.

Ich habe das Script mit MSIE 6, Konqueror 3.5, Opera 8.51, Mozilla Firefox 1.5 getestet.

Das Interessante für mich bei der Entwicklung war das Austesten von Methoden, die Operationen am DOM-Elementenbaum erlauben, bevor der load-Event gefeuert ist (siehe auch Breaking onload limits, wie im Zusammenhang mit Unobtrusive JavaScript angesprochen). Ich musste leider feststellen, dass die Timer- bzw. Scheduler-Methode, wie sie prominent von domFunction benutzt wird, bei Seiten vom Kaliber der Forumshauptseite nicht zuverlässig funktioniert. Wenn document.getElementById("root") zur Verfügung steht, sind dennoch nicht alle li-Elemente darin über getElementsByTagName("root") ansprechbar. Dasselbe gilt für document.body, was mich äußerst überraschte.

Eine erste Version mit einer eigenen Scheduler-Funktion habe ich daher verworfen. Beim obigen Script und anderen Scripten werden ich eine einfache Kombination aus abwärtskompatiblem onload und den (undokumentierten, proprietären) DOMContentLoaded-Event für Gecko-Browser verwenden. Dadurch erscheint die »Neue Nachrichten«-Meldungsbox im Firefox am schnellsten nach der Übertragung der Seite, in den anderen Browsern wird erst mit dem load-Ereignis nach neuen Antworten gesucht. Das ist unschön, aber einen zuverlässigen Workaround für DOMContentLoaded in anderen Browsern gibt es offenbar nicht. Ich schlage diese Vorgehensweise auch für ähnliche Forums-Scripte vor, die Funktion addContentLoadListener() sollte beliebig weiterverwendbar sein.

Mathias

  1. Hallo.
    Nicht uninteressant. Derzeit habe ich zwar keine Verwendung dafür, aber prinzipiell gefällt mir sowas ja. Ich kann mir auch eine Erweiterung für Antworten oder zumindest neue Eröffnungsbeiträge von Mitgliedern der Whitelist vorstellen.
    MfG, at

  2. Hey,

    hmm ich habe gerade mal dein Script versucht aber leider kommt bei mir die Box da auf der Rechten Seite nicht wie du das in der Grafik hast. Muss ich da noch was anderes machen?

    Mit freundlichen Grüßen,
    Bettina

    1. Hallo,

      hmm ich habe gerade mal dein Script versucht aber leider kommt bei mir die Box da auf der Rechten Seite nicht wie du das in der Grafik hast. Muss ich da noch was anderes machen?

      Man muss verschiedenes in der Konfiguration ändern, wie es in der Anleitung im Script beschrieben steht.
      Bei mir taucht die Box auf der rechten Seite auf, weil mein besagtes Benutzer-Stylesheet das Forum entsprechend umformatiert (die standardmäßig linke Spalte wird bei mir zur rechten Spalte). Wenn man das nicht macht, taucht die Box links unter der roten Box mit Suche, Quicklinks und Optionen auf. Notiert man im Quellcode var target_id = "kopf-haupt"; am Anfang der Funktion followup_notice(), dann taucht die Box in der rechten Spalte auf. Im Script stehen auch einige CSS-Regeln, die die Meldungbox foamtieren könnten, die müsste man in das Benutzer-Stylesheet übernehmen.

      Mathias

  3. Hallo Mathias,

    http://molily.de/temp/forum.js

    Wunderbar, vielen Dank.

    Ich habe das Script mit MSIE 6, Konqueror 3.5, Opera 8.51, Mozilla Firefox 1.5 getestet.

    Opera 9 ist übrigens wesentlich schneller als 8.5.

    So sieht’s mit meinem Benutzerstylesheet aus:

    Grüße
     Roland

    1. Hallo

      So sieht’s mit meinem Benutzerstylesheet aus:

      hmm hab das auch gerade mal bei mir geladen gefällt mir sehr gut nur was ich mich gerade frage wo sind die Links um einen neuen Tread auf zu machen der wird bei mir gar nicht angezeigt :-(

      Mit freundlichen Grüßen,
      Bettina

      1. Hallo Bettina,

        Benutzerstylesheet

        wo sind die Links um einen neuen Tread auf zu machen der wird bei mir gar nicht angezeigt :-(

        Doch, rechts oben in der zweiten Zeile: [Neue Nachricht verfassen]

        Grüße
         Roland

        1. Hallo,

          Doch, rechts oben in der zweiten Zeile: [Neue Nachricht verfassen]

          hmm du leider sehe ich da nichts. Hier mal das Screen von mir.

          Bild

          Mit freundlichen Grüßen,
          Bettina

          1. Hallo,

            hmm schade das Bild wird nicht angezeigt. Hier mal der Link:

            http://img279.imageshack.us/my.php?image=11wn.jpg

            Mit freundlichen Grüßen,
            Bettina

            1. Hallo Bettina,

              http://img279.imageshack.us/my.php?image=11wn.jpg

              Hm, mit welchem Browser surfst du denn?

              Grüße
               Roland

              1. Hallo,

                Hm, mit welchem Browser surfst du denn?

                ich habe den Mozilla Firefox 1.0.7

                Mit freundlichen Grüßen,
                Bettina

                1. Hallo Bettina,

                  ich habe den Mozilla Firefox 1.0.7

                  Nutzt du die XHTML-Ansicht? Mit der HTML-Variante wird es nicht wie gewünscht funktionieren. Alle nötigen Einstellungen sind im Quelltext des Stylesheets angegeben. Sollte es dann immer noch nicht funktionieren, empfehle ich Opera. ;-)

                  Grüße
                   Roland

                  1. Hallo,

                    Nutzt du die XHTML-Ansicht? Mit der HTML-Variante wird es nicht wie gewünscht funktionieren. Alle nötigen Einstellungen sind im Quelltext des Stylesheets angegeben. Sollte es dann immer noch nicht funktionieren, empfehle ich Opera. ;-)

                    nun ja wenn ich das mit der XHTML Ansicht mache, dann geht das aber dann sieht es alles nicht mehr schön aus :-( ich werde dann wieder zu meinem alten Design wechseln!

                    Mit freundlichen Grüßen,
                    Bettina