Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Netscape Navigator 6 Problem
Frage
Kann mir jemand sagen warum dieser Newsticker im Navigator 6 nicht funktioniert?
<script language="javascript1.2">
<!--
function ticker()
{
tickertext=tickertext.substr(1,anz-1) + tickertext.charAt(0);
if (document.all)
{
document.all('nt').innerText=tickertext;
}
if (document.layers)
{
document.lnt.document.open();
document.lnt.document.write('<p align="center">' + tickertext + '</p>');
document.lnt.document.close();
}
if (document.getElementById)
{
document.getElementById('nt').innerText=tickertext;
}
return;
}
function init_nt(zeit)
{
window.setInterval('ticker()',zeit);
}
//-->
</script>
Im NN 4 und und auch IE klappt alles bestens.
Vielen Dank im vorraus!
Antwort 1 von semi
Die Funktion innerText und das Element-Array document.all gibt es nur für den IE.
Ansonsten ist tickertext nirgendwo deklariert.
Allein schon die erste Zeile der Funktion ticker() funktioniert deswegen nie.
Ansonsten ist tickertext nirgendwo deklariert.
Allein schon die erste Zeile der Funktion ticker() funktioniert deswegen nie.
Antwort 2 von semi
Die Fehlerursache wird aber das folgende sein:
if(document.getElementById)
{
document.getElementById('nt').innerText=tickertext;
}
Wenn die Funktion document.getElementById existiert, heisst es noch lange nicht das innerText existiert.Antwort 3 von pfroschX
Das es document.all nur für den IE gibt war mir bekannt. Darum habe ich ja auch die Schleife document.getElementById eingefügt. Wie kann ich das denn für den NN 6 realisieren, wenn innerText nicht verwendbar ist?
Antwort 4 von pfroschX
Nebenbei, tickertext habe ich weiter oben in einer javascript1.0 function deklariert. Hab ich dummerweise nicht mit kopiert.
Antwort 5 von semi
Das ist immer wieder das gleiche Problem mit den Browserunterschieden.
Schau Dir vielleicht das folgende Beispiel an: http://developer.irt.org/script/522.htm
Für IE DIV verwenden, für Netscape Layer.
Sag Bescheid, wenn Du es irgendwie hinkriegst. Das würde mich auch interessieren.
Gruss,
Michael
Schau Dir vielleicht das folgende Beispiel an: http://developer.irt.org/script/522.htm
Für IE DIV verwenden, für Netscape Layer.
<body>
...
...
<script>
if(document.all)
document.write("<div id=\"nt\"></div>");
else
document.write("<layer id=\"nt\"></layer>");
</script>
...
...
</body>
Dann in das DIV mit innerHTML oder innerText schreiben, open-writeln-close bei Netscape für Layer. Sollte gehen.Sag Bescheid, wenn Du es irgendwie hinkriegst. Das würde mich auch interessieren.
Gruss,
Michael
Antwort 6 von pfroschX
Werd ich machen. Heute habe ich keine Lust mehr, aber ich hoffe ich komme morgen dazu.
Antwort 7 von semi
Ich habe etwas experimentiert. Am einfachsten geht es leider nur mit einem Formularfeld. Funktioniert zumindest in IE, Mozilla und Opera. Opera zeigt allerdings immer noch den Rahmen des Eingabefeldes, obwohl es mit CSS formatiert wird.
Gruss,
Michael
<html>
<head>
<script type="text/javascript">
<!--
var tickertext="Dies ist ein Test... ";
var anz = tickertext.length-1;
function ticker() {
tickertext=tickertext.substr(1, anz) + tickertext.charAt(0);
var txt = document.getElementById("ausgabe");
txt.value=tickertext;
}
window.setInterval('ticker()', 250);
//-->
</script>
</head>
<body>
<form>
<input id=ausgabe style="font-family:monospace;border:1px solid black;width:180px;">
</form>
</body>
</html>
Gruss,
Michael
Antwort 8 von pfroschX
Ich habe mich nun für eine andere Lösung entschieden. Über innerHTML funktioniert es immerhin in NN6. Damit läuft es immerhin in NN4, NN6 und dem IE. Opera klappt leider nicht, der unterstützt weder innerText noch innerHTML. Naja geht mir momentan sowieso nur um eine temporäre Anzeige die sich bald erledigt hat:)
Vielen Dank für deine Bemühungen!
Vielen Dank für deine Bemühungen!

