Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Laufschrift ist abhängig von der PC-Geschwindigkeit mal zu schnell, mal zu langsam





Frage

Hallo, für meine Website habe ich folgende Laufschrift programmiert: <head> ... <script language="JavaScript1.2" type="text/javascript"> <!-- <!-- Laufschrift --> var z=1; var b=1; var g=1; function laufe() { if (document.layers) document.band.left=z; else document.all.band.style.left=z; z-=g; if(z<-2500)z=910; setTimeout("laufe()",b); } //--> </script> <style type="text/css"> <!-- #band { position:absolute; } h4{ color:white;} //--> </style> <meta name="author" content=""> </head> <body onLoad="laufe()" bgcolor="#383539" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF"> <!--Ticker//--> <DIV ID="band"> <table width="100%"> <tr> <td width="100%" nowrap> <h4> Neu: bla,bla,bla -> XXXXX: täglich 9.00-13.05 Uhr -> YYYY: Montag, Mittwoch und Freitag 9.00-11.30 Uhr </h4> </td> </tr> </TABLE> </DIV> ... Das Problem ist nun, daß auf schnellen Rechnern das Laufband recht flott zu Ende ist und dann eine längere Pause entsteht, bevor es von vorne beginnt. Bei sehr langsamen Rechnern bricht es hingegen vor dem Ende ab und beginnt am Anfang von Neuem. Frage: gibt es auch eine hardware-unabhängige Lösung? DANKE IM VORAUS!

Antwort 1 von mubarak

Hi, sicher hängt es auch von der Rechnergeschwindigkeit ab und der im Script programmierten Schrittgeschwindigkeit. Hast schon mal nach fertigen Laufschriften geschaut? Vielleicht kannst du dir dort was abschauen. Ich verwende z.B. ein Applet von DanCity auf Java-Basis. Es gibt aber auch noch viele Andere z.B. wo man den Anzeigetext in eine externe Datei eingeben kann z.B. hier:http://www.methodica.ch/download/ticker/t_ticker.htm

Antwort 2 von Proggi

die ist deshalb abhängig von der rechnergeschwindigkeit weil du 2 fehler drin hat:


function laufe() {
... laufe()

ungünstig da du bei jedem durchlauf wieder einen durchlauf startest. das heißt das programm belegt immer mehr speicher da die schleife nicht beendet wird.


anstelle von Laufe kannst au auch schreiben::


function laufe() {
if (document.layers) document.band.left=z;
else document.all.band.style.left=z;
z-=g;
if(z<-2500)z=910;
setTimeout("
Zitat:
function laufe() {
if (document.layers) document.band.left=z;
else document.all.band.style.left=z;
z-=g;
if(z<-2500)z=910;
setTimeout("laufe()",b);
}
",b);
}


und in der schleife wird es wieder ersetzt etc also jeder weitere durchlauf der schleife wartet auf das ende der in ihr wieder gestarteten schleife - starte nicht aus einer schleife die gleiche schleife wieder da du damit eventuell versehendlich eine kaskade startest...

zweiter fehler:
du setzt ein timeout von 1 also 1/1000s das ist so wenig das du versuchst 1000 durchläufe pro sekunde zu machen daher läußt das viel zu schnell wenn der pc mitkommt.


Lösung:

Zitat:
<body onLoad="setInterval('laufe()', 100);">


ruft laufe alle 0,1 sekunden auf

Laufe selber must du dann umschreiben:
Zitat:
function laufe() {
if (document.layers) {
document.band.left=z;
}
else {
document.all.band.style.left=z;
}
z-=g;
if (z<-2500) {
z=910;
}
}


müste etwa hinkommen - ich hab nun dein Laufe nur so umgeschrieben das laufe selbst sich nicht wieder aufruft und gewöhne dir an deinen quelltext einheitlicher zu gestallten, also blöcke mit klammern abzuschließen um start und ende einer if-schleife besser finden zu können.

Antwort 3 von Proggi

kleine korrektur (aber vom grundsatz bleibts ungünstig mit dem laufe...laufe)

die vorherige schleife wird schon beendet da du die im timeout startest, aber ich würde trotzdem vermeiden die schleife in der schleife zu starten da es zu unerwünschten nebeneffekten führen kann eine schleife sich selbst ausführen zu lassen.

Antwort 4 von rfb

Wenn du schon solchen Unsinn einbaust kannst du auch einfach das proprietäre Tag
marquee
nutzen, schlimmer wird dein Quellcode dadurch auch nicht.

Letztlich nervt bewegte Schrift nur, daher ein gut gemeinter Rat: lass es einfach weg!

Antwort 5 von benny_aua

Vielen Dank für die Tipps, es funktioniert super!

Antwort 6 von rfb

Zitat:
Vielen Dank für die Tipps, es funktioniert super!
ich hoffe du meinst den letzten Tipp
Zitat:
lass es einfach weg!


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: