Supportnet Computer
Planet of Tech

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.


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.


<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.

<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!

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: