Joern Wittek: (D-HTML) (BROWSER) Crossbrowser-Ticker

Hallo Forum!

Ich suche nach einer Möglichkeit, einen Newsticker mit einem DIV-Tag zu realisieren. Ich habe auch schon zur genüge Beispiele studiert.

Ich möchte auf jeder Seite den selben Ticker verwenden. D.h., jede Seite muss auf ein Script zugreifen, in dem sowohl der Code als auch die Ticker-Texte selbst gespeichert sind.

Mit dem IE klappt beides, d.h. die Beispiele und das mit dem externen Script, beim NN 4.7 klappen nur die Beispiele und in der NN 6 Preview klappt gar nichts.

Weiß jemand ...

1. ... warum das beim NN 4.7 mit dem externen Script nicht klappt und
2. ... wie man beim NN 6 Preview und hoffentlich auch beim
       zukünftigen NN 6 das "Innere" eines DIV anspricht.

Bin für jede Hilfe dankbar!

CU TJ

  1. Hallo Joern,

    diesen Ticker habe ich selbst mehrfach eingesetzt und er funzt mit beiden Browsern:

    <script language="javascript">

    <!--

    /*
        Titel: DHTML Ticker
        Autor: Christoph Bergmann
        email: cb@acc.de

    Copyright (c) Milch und Zucker - c. Bergmann und j. Gamperl, 1998.
        All rights reserved. Alle Rechte vorbehalten. URL: http://dhtml.seite.net

    Dieser Code darf für nicht-kommerzielle  sowie kommerzielle Zwecke frei
        genutzt und angepaßt werden, solange dies unentgeltlich erfolgt und
        dieser Vermerk bestehen bleibt.
    */

    var delay=20;
    var nextm=0;

    var msg=new Array
    (
            '   Text   ',
            '   Text 2 ',
            '   und...so...weiter  '
    );

    function start_ticker()
    {
            do_ticker(msg[0], 0, 1);
    }

    function do_ticker(text, pos, dir)
    {
            var out='<font face="Arial, Helvetica" color="#FF9600">[ <font color=white><font size=-1>'+text.substring(0, pos)+'</font></font> ]</font>';

    if(navigator.appName=="Netscape")
                    with(document.ticker.document)
                    {
                            open(); write(out); close();
                    }
            else
                    ticker.innerHTML=out;

    pos+=dir;

    if(pos>text.length)
                    setTimeout('do_ticker("'+text+'",'+pos+','+(-dir)+')', delay*10);
            else
            {
                    if(pos<0)
                    {
                            if(++nextm>=msg.length)
                                    nextm=0;
                            text=msg[nextm];
                            dir=-dir;
                    }

    setTimeout('do_ticker("'+text+'",'+pos+','+dir+')', delay);
            }
    }

    // -->

    </script>

    </head>

    <body background="images/bg.gif" onload="start_ticker()">

    <div id="ticker" align="center" style="position: absolute; top:0px; left:180px; width:500px; height:19px; background-color:#000000"></div>

    </body>
    </html>

    Normalerweise müßte dieser Ticker auch in einer externen JS-Datei klappen; bitte daran denken, dass direkt mit der Funktion begonnen werden muss (also kein <script>-Tag mehr am Anfang der externen JS-Datei).

    Weitere Ticker gibt es übrigens bei 'Milch und Zucker' unter der seite http://dhtml.seite.net und bei 'Gismo' unter http://www.gismo.at

    Und wenns nicht klappt, einfach mal alles, also auch das Script und die externe Datei posten, dann finden wir den Fehler schon :-)

    Viel Spaß beim DHTMLen & schönen Sonntag abend

    Viele Grüße
        Alex

    1. Hallo!

      Genau diesen Ticker habe ich auch als Grundlage benutzt! Aber er funktioniert nicht in der externen .js-Datei! Das hängt sicher mit dem NN zusammen. Ich will den Ticker aber nicht in jedes Dokument einbinden, weil furchtbar viel Zeit kostet, wenn ich zweihundert oder mehr Dateien aktualisieren muss.

      Die externe .js-Datei übernimmt neben dem Newsticker auch noch das Sitemnü, ein Menü für den aktuellen Bereich und eine Copyright-Zeile.

      (Code kann ich leider nicht posten, weil ich den Code wegen der Nicht-Funktion erst einmal gelöscht habe! Ganz schlechte Idee! Sollte ich nicht mehr machen!)

      Was ist mit NN 6 Preview und dem Ansprechen eines DIV???

      Hope You Can Help!

      PS: Wenn es keine Lösung dafür gibt oder diese nur schwer zu beschaffen ist, nehme ich halt ein Pop-Up!

      CU TJ

      1. Hallo Joern,

        also, ich habe es gerade mal probiert und diesen Ticker in eine externe js-Datei eingebunden - und es klappt einwandfrei, sowohl im IE 5.5 als auch im Nets 4.7.

        Vielleicht der Hinweis, dass Du im <head> Bereich den Ticker wie folgt referenzieren sollst:

        <script language="JavaScript" src="datei.js"></script>

        Ansonsten könnte es ein Fehler im weiteren Scriptteil sein, also in Deinem Menü.

        Wie es beim Netscape 6 ist, kann ich nicht sagen, da ich diese Preview nicht hier auf dem Rechner habe.

        Wie gesagt... bitte alles nochmal Kontroll-lesen und im Zweifel alles posten oder mir das Script einfach mal mailen.

        So long
           Alex

      2. Nachtrag

        Hi Joern,

        ich hab mir jetzt mal die Seite angesehen; für mehr fehlt gerade die Zeit. Und mir fällt auf, dass Du es manchmal tierisch konmpliziert machst.

        Wieso schreibst du

        <span class=bold>01. Juni 2000</span>

        statt <b>01. Juni 2000</b>

        oder bei den Tabellen

        <td width=58 rowspan=2 style="background: white url('./images/lns_v_l.gif') repeat-y; vertical-align: bottom;">

        statt

        <td bgcolor="#FFFFFF" background="./images/lns_v_l.gif" valign="bottom">

        Kann es sein, dass Deine Scripte vielleicht deshalb haken, weil Netscape mit den CSS-Angaben probleme hat und deshalb spinnt.

        Und beim Nets erscheinen Deine Trennlinien nicht farbig; ich schätze, Du hast diese Angaben in der CSS-Datei formatiert. Geht aber nicht einwandfrei; also nimm bitte folgenden Syntax:

        <hr size="1" noshade color="#FF0000" (evtl. noch: width="xxxpx")>

        Oder andersrum:
        Wie äußert sich der Fehler den überhaupt? Macht Netscape gar nichts oder meckert es oder was??

        Also, rühr Dich :-)

        Gruß Alex

      3. Nachtrag, die Zweite

        Hallo,

        Ich hab gerade gesehen, dass Du im <body>-Tag ja den Ticker gar nicht initialisieren läßt...

        also bitte:

        <body bgcolor="#FFFFFF" (... weitere Angaben...) onload="start_ticker()">

        War's das vielleicht???

        Take care
           Alex

  2. Sup!

    http://outpost.purespace.de/bionicDOMguide.html

    Da habe ich mal die Dokumenation zum DOM I des W3C ins deutsche uebersetzt. (Quick & Dirty)

    Da steht dann, wie man mit

    document.getElementById("elementID").replaceChild(Node1,Node2)

    das .innerHTML simulieren kann - vorausgesetzt, man steigt da durch.
    Neue Knoten kann man mit .createTextNode kreieren - die sind Voraussetzung dafuer, dass man einen Knoten zum Austauschen hat.
    Ich werde zu diesem Thema ein Beispiel ins Netz stellen und die URL hier als Folgeposting posten.
    Schliesslich muss alles getan werden, damit der NN6 bei seinem Erscheinen maximal unterstuetzt wird :-)

    Gruesse,

    <img src="http://outpost.purespace.de/mozilla.jpg" alt="">

    Bio

    1. Hallo!

      Bzw. eine maximale Kompatiblität zwischen dem NN und dem IE hergestellt wird. Deshalb ja auch Cross-Browser Lösungen!

      CU TJ

      1. Hi!

        Bei developer.netscape.com haben sie auch so eine Crossbrowser-DHTML-Bibliothek herumliegen, und im Archiv findest Du sicher noch mehr Links zu aehnlichen Bibliotheken.

        Damit ist es natuerlich am einfachsten, Crossbrowser-DHTML zu schreiben, allerdings gibt das bei kleinen Seiten wegen der einzubindenden relativ grossen JS-Dateien einen ziemlichen Overhead.

        Gruesse,

        Bio

  3. Hallo!

    Ist jetzt alles ein weig durcheinander, aber egal:

    Wegen der Kompliziertheit: Ich weiß nicht warum aber der NN nimmt den <b>-Tag nicht an und formatiert auch nichts fett. Deshalb der Umweg mit dem <span class=bold>

    Der NN mault nicht, sondern verweißt in der Statuszeile nur auf einen "JavaScript-Error", denn man nach Eingabe von javascript: in der Adressleiste auch angezeigt bekommt: "document.ticker has no properties."

    Die Initialisierung findet in einem <script>-Tag statt:
    <script>
        <!--
        start_ticker(msg[0], usw...);
        // -->
    </script>

    Die Sache mit den Styles in den Tags ist so: Ich bin dagegen, eine Formatierung mit Attributen zu machen, wenn's auch mit CSS geht, und es geht beim IE als auch (man sehe und staune) beim NN 4.7 & 6.

    Die <hr>-Farbe werde ich wohl als Attribute wie von dir gepostet einfügen müssen.

    Im <head></head> ist die site.js wie folgt eingebunden:
    <script src="./site.js"></script>. Die Angabe der Sprache erfolgt über den Meta "Content-Script-Type".

    Posten des Scripts bringt halt wegen der gelöschten do_ticker - function nichts.

    PS: Letzte Nachricht für heute. Ich gehe jetzt ins Bett, weil ich morgen eine Englisch-Arbeit schreibe.

    CU TJ