Leidiges Thema: Ticker und Firefox

Kaeschdin

Erfahrenes Mitglied
Liebe Javascripter,

ich war auf der Suche nach einem Ticker für eine Website und bin auf folgenden (geschlossenen) Thread gestoßen: http://www.tutorials.de/forum/html/4373-urgent-ticker-html-oder-dhtml.html

Hab den Tickertext und die Position angepasst. In IE läuft er prima, in Firefox erscheint er gar nicht. Ich denke mal, da sind irgendwelche Uralt-Codeschnipsel drin, an denen es liegt. Da ich leider keine Ahnung von JS habe, erhoffe ich mir durch euch eine Lösung des Problems. Was muss ich ändern, damit der Ticker auch in Firefox läuft?

Schonmal lieben Dank,

Kerstin

Edit: Für den Fall, dass der Link bei euch nicht funktioniert, hier der Code:

<HEAD>

<SCRIPT LANGUAGE="JavaScript1.2">
<!-- Original: Ernst Straka (ernst.straka@central-europe.basf.org) -->
<!-- Web Site: http://www.rs-systems.at/straka -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var l1 = 0; // left of ticker in pixel, or 0 to position relative
var t1 = 0; // top of ticker in pixel, or 0 to position relative
var w1 = 400; // width of ticker in pixel
var ie = document.all ? true : false;
var first = true;
var l2 = l1 + w1;
var l3 = l1 - l2;
var l = l2;
function tickinit() {
if (ie) {
if (l1 == 0 && t1 == 0) {
pos = document.all['tickpos'];
l1 = getLeft(pos);
t1 = getTop(pos);
}
ticktext.style.posTop = t1;
}
else {
if (l1 == 0 && t1 == 0) {
pos = document.anchors['tickpos'];
l1 = pos.x;
t1 = pos.y;
}
document.ticktext.pageY = t1;
}
l2 = l1 + w1;
l3 = l1 - l2;
l = l2;
setInterval('tick()', 10);
}
function getLeft(ll) {
if (ll.offsetParent)
return (ll.offsetLeft + getLeft(ll.offsetParent));
else
return (ll.offsetLeft);
}
function getTop(ll) {
if (ll.offsetParent)
return (ll.offsetTop + getTop(ll.offsetParent));
else
return (ll.offsetTop);
}
function tick() {
l = l - 0.5;
if (l < l3) l = l2;
cl = l1 - l;
cr = l2 - l;
if (ie) {
ticktext.style.posLeft = l;
ticktext.style.posTop = t1;
ticktext.style.clip = "rect(auto "+cr+"px auto "+cl+"px)";
if (first) ticktext.style.visibility = "visible";
}
else {
document.ticktext.pageX = l;
document.ticktext.clip.left = cl;
document.ticktext.clip.right = cr;
if (first) document.ticktext.visibility = "show";
}
first = false;
}
// End -->
</script>
</HEAD>

<BODY OnLoad="tickinit()">

Im Body:

<a name="tickpos"> </a>

<div id="ticktext" style="position:absolute;font-family:arial;font-size:14pt;visibility:hidden;">
<nobr>Doesn't this message scroller look great? You can even insert links like this: <a href="http://www.yahoo.com" target="_blank">yahoo.com</a> Now it repeats.</nobr>
</div>
 
Zuletzt bearbeitet:
Hi,

zunächst werden Elemente mit ID im FF über die Methode getElementById angesprochen, CSS-Eigenschaften
über das style-Objekt. Weiterhin sind mir Angaben wie clip.right oder clip.left als JS-Styleeigenschaft oder
"show" als Eigenschaftswert für visibility unbekannt.

Versuch es mal so:
Code:
<script type="text/javascript">
  <!--
<!-- Original: Ernst Straka (ernst.straka@central-europe.basf.org) -->
<!-- Web Site: http://www.rs-systems.at/straka -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var l1 = 0; // left of ticker in pixel, or 0 to position relative
var t1 = 0; // top of ticker in pixel, or 0 to position relative
var w1 = 400; // width of ticker in pixel
var ie = document.all ? true : false;
var first = true;
var l2 = l1 + w1;
var l3 = l1 - l2;
var l = l2;

function tickinit() {
	if (ie) {
	  if (l1 == 0 && t1 == 0) {
	    pos = document.all['tickpos'];
	    l1 = getLeft(pos);
	    t1 = getTop(pos);
	  }
	  ticktext.style.posTop = t1;
	}else {
	  if (l1 == 0 && t1 == 0) {
            pos = document.getElementById("tickpos");
	    l1 = pos.offsetLeft;
	    t1 = pos.offsetTop;
	  }
	  document.getElementById("ticktext").pageY = t1;
	}

	l2 = l1 + w1;
	l3 = l1 - l2;
	l = l2;
	setInterval('tick()', 10);
}

function getLeft(ll) {
	if (ll.offsetParent)
	  return (ll.offsetLeft + getLeft(ll.offsetParent));
	else
	  return (ll.offsetLeft);
}

function getTop(ll) {
	if (ll.offsetParent)
	  return (ll.offsetTop + getTop(ll.offsetParent));
	else
	  return (ll.offsetTop);
}

function tick() {
	l = l - 0.5;

	if (l < l3) l = l2;

	cl = l1 - l;
	cr = l2 - l;

	if (ie) {
	  ticktext.style.posLeft = l;
	  ticktext.style.posTop = t1;
	  ticktext.style.clip = "rect(auto "+cr+"px auto "+cl+"px)";
	  if (first)
    	ticktext.style.visibility = "visible";
	}else {
          document.getElementById("ticktext").style.left = l+"px";
          document.getElementById("ticktext").style.clip = "rect(auto "+cr+"px auto "+cl+"px)";
	  if (first)
    	    document.getElementById("ticktext").style.visibility = "visible";
	}
	first = false;
}
 //-->
</script>
Ciao
Quaese
 
Du bist ja ein Schatz. Zwar verläuft der Ticker vertikal gegenüber IE leicht nach oben versetzt, aber er läuft. Allerbesten Dank :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück