Newsticker Probleme mit DOCTYPE

Zolu

Grünschnabel
Hallo zusammen,

ich habe nun div. Newsticker mal durchgetestet, doch habe ich beim Javascripteinbau immer das Problem, dass Firefox nicht mitziehen will.

Nach dem durchwälzen einiger Seiten bin ich nun darauf gekommen, dass der Firefox Probleme mit XHTML unkonformen Quelltext schiebt.

Der IE frisst wieder alles, da er ja keinerlei Begrenzungen kennt.

Beim FF startet der Ticker jedoch erst, wenn der Doctype XHTML unvalide gemacht wurde, oder eben entfällt.

Der Code des Tickers wäre folgender:
Code:
<script language="javascript">
    NewsTickerText = new Array();
    
    NewsTickerText[0] = '<strong>Test 123</strong>';
    
    NewsTickerDelimiter  = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    NewsTickerInterval   = 25;
    NewsTickerStop       = true;
    NewsTickerRepeat     = 5;
    NewsTickerBorder     = '1px solid #818181';
    NewsTickerWidth      = 613;
    NewsTickerPadding    = 1;
    
    IE=document.all&&!window.opera;
    DOM=document.getElementById&&!IE;
    
    if(DOM||IE) {
        var NewsTickerGo;
        NewsTickerPos  = 0;
        NewsTickerStop = NewsTickerStop?'onmouseover="clearInterval(NewsTickerGo)"onmouseout="NewsTickerGo=setInterval(\'DM_ticken()\','+NewsTickerInterval+')"':'';
        NewsTickerTxt  = NewsTickerDelimiter+NewsTickerText.join(NewsTickerDelimiter);
        NewsTickerText = NewsTickerTxt;
        
        for(i=1; i < NewsTickerRepeat; ++i) { 
            NewsTickerText = NewsTickerText + NewsTickerTxt; 
        }
        
        document.write('<div style="overflow:hidden;border:'+NewsTickerBorder+';width:'+NewsTickerWidth+'px;padding:'+NewsTickerPadding+'px 0px '+NewsTickerPadding+'px 0px;">'+'<nobr><span id="ticker"style="position:relative;"'+NewsTickerStop+' class="newsticker">'+NewsTickerText+'</span></nobr></div>');
        
        NewsTickerObj=IE?document.all.ticker:document.getElementById('ticker');
        
        function DM_ticken() {
            NewsTickerOffset=NewsTickerObj.offsetWidth/NewsTickerRepeat;
            
            if ( Math.abs(NewsTickerPos) > NewsTickerOffset ) { 
                NewsTickerPos=0; 
            }
            
            NewsTickerObj.style.left=NewsTickerPos;
            NewsTickerPos--;
        }
        NewsTickerGo= setInterval('DM_ticken()', NewsTickerInterval);
    }
//-->
</script>

Bei einem anderen Ticker, der mir jedoch nicht so gut gefallen hat, weil er beim OnMouseOver nicht stehen blieb, gab es das Problem mit getElementBy .... das lief nachher jedoch im FF und IE.

Bei diesem Exemplar jedoch, funktioniert es nicht. Meine Vermutung richtet sich auf das "document.write', welches glaube ich, nach XHTML Standard nicht mehr "erlaubt" ist.

Habt ihr eine Lösung bzw Lösungsvorschläge parat?

Grüße
Zolu
 
Das Problem beim FF lässt sich eigentlich recht einfach abstellen:
Er benötigt bei der Angabe
Code:
NewsTickerObj.style.left
...noch ein "px" hinter dem Wert, dann geht es.
Das Problem ist vielmehr der IE, der im STRICT-Modus die angegebene Breite nicht einhält.

Ich habs mal etwas modifiziert: http://www.doktormolle.de/temp/ticker2.htm
 
Ich habe die Variante in
Code:
NewsTickerObj.style.left=NewsTickerPospx;
geändert, jedoch ohne Wirkung.

Dein Beispiel, läuft bei mir im FF wunderbar, doch übernehme ich den dargestellten Quellcode läuft der Ticker 1. nur dann los, wenn ich den Doctype rausnehme und 2. passiert beim MouseOver nur eine "Verlangsamung" und kein Anhalten.

Bei mir im Header habe ich schon den Transitional statt Strict genommen, aber t eben nicht :(
 
Wenn ich deinen Ticker extern einbinde, läuft er.

ABER wieder nur ohne Doctype, bzw ohne Transitional

:/
 
So, wie er jetzt da läuft, läuft er sowohl mit DOCTYPE XHTML Strict und XHTML Transitional....ich kann wirklich nicht hellsehen.
Ich sage, es läuft...und dass es läuft, kann man sehen. Was bei dir nicht hinhaut, entzieht sich meiner Kenntnis :(
 
Öhm, also ich sehe im Quelltext kein Doctype bei dir :-)
Aha, und was ist das hier?

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD  XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Ticker2</title>
 
Hach ist das lustig :P

Des wohl gecachte Seiten sind, hat der FF die nicht komplett neu geladen und damit eine uralte Version mit blauem Hintergrund und so dargestellt.

Ich wunder mich schon, wo der Hinweis stehen sollte, dass man das extern einbinden soll :)

Aber nun seh ich, wo es steht, weils ne komplett andere Seite ist :P

Damit funktioniert es dann auch im FF *kopfschüttel*


Bliebe zuletzt noch die Frage, wie ich die Newsdaten bevorzugt aus einer MySQL Datenbank abrufen bzw. einbinden kann.

Vielen Dank soweit schon mal :)
 
Bliebe zuletzt noch die Frage, wie ich die Newsdaten bevorzugt aus einer MySQL Datenbank abrufen bzw. einbinden kann.

Statt einer statischen JS-Datei kannst du auch ein PHP-Skript als externes JS einbinden.(der Vollständigkeit halber sende dort einen Content-Type-Header "text/javascript"...)
Dann kannst du die Daten per PHP abholen und als JS-Code ausgeben.

Optimalerweise solltest du beim Referenzieren dieses Skriptes im Dokument einen Timestamp anhängen, damit es auch wirklich neugeladen wird.
 

Neue Beiträge

Zurück