Seite 1 von 1

Skriptfehler

Verfasst: 15.02.2013 08:02
von Christina92
Habe folgendes Problem beim ausüfhren eines Skriptes:
[ externes Bild ]

Code: Alles auswählen

<script type="text/javascript">
</script>
<style>
#catfish37e68c71{PADDING: 0px;MARGIN: 0px 0px -90px;WIDTH: 100%;HEIGHT: 90px;BOTTOM: 0px;POSITION: fixed;}
</style>
<!--[if IE]>
<style>
#catfish37e68c71{ Z-INDEX: 1000; OVERFLOW: hidden; POSITION: absolute;}
HTML,BODY {OVERFLOW: hidden;WIDTH: auto;HEIGHT: 100%;}
DIV#zip37e68c71{PADDING: 0px;MARGIN: 0px;OVERFLOW: auto;WIDTH: 100%;HEIGHT: 100%;POSITION: relative;}
</style>
<![endif]-->
<div id="topad37e68c71"></div>
<html>


<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<head>
<title>INFO</title>
<meta http-equiv="Content-Type" content="text/html; charset="iso-8859-1">



<style type="text/css">
body   { font-family:Verdana; font-size:8pt; text-decoration:none;color:"#330000"}
a:link { font-family:Verdana; font-size:8pt; text-decoration: none; color:"#B1C8E3"}
a:visited  { font-family:Verdana; font-size:8pt; text-decoration: none; color:"#B1C8E3"}
a:hover    { font-family:Verdana; font-size:8pt; text-decoration: none; color:"#70B2FF" }
td     { font-family:"Verdana"; font-size:8pt; text-decoration:none; ; color: #D9D3D0}
td.notice  { font-family:Verdana; font-size:8pt; text-decoration:none; line-height:130%}
.ip {font-family:Verdana; font-size:8pt; border-width:1; border-color:black; border-style:solid;input}
.small {font-family:Verdana; font-size:8pt; text-decoration:none;color:"#dddddd"}
img.blk    {border-color:#000000; color:#000000}
.input{font-family:Verdana; font-size:8pt; color:black; background-color:rgb(153,153,153); border-width:1;  border-color:rgb(204,204,204); border-style:solid;input}
</style>

<style type="text/css">
body
{scrollbar-3dlight-color:#606060;
scrollbar-arrow-color:#606060;
scrollbar-track-color:#080707;
scrollbar-darkshadow-color:#080707;
scrollbar-face-color:#080707;
scrollbar-highlight-color:#080707;
scrollbar-shadow-color:#606060;
 background-image: url("bg_notice.gif");
 background-repeat: no-repeat;
 background-attachment : fixed;
}
</style>

<script language=javascript>
function bluring(){
if(event.srcElement.tagName=="A"||event.srcElement.tagName=="IMG") document.body.focus();}
document.onfocusin=bluring;
</script>
<style type="text/css">
body {overflow-x : hidden}
</style>
</head>


<body text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="000000" oncontextmenu="return false" onselectstart="return false">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
	<tr>
		
	</tr>
	<tr><td height="5"></td></tr>
	<tr>
    <td style="padding:0 10 0 10">
      <table width="100%" border="0" cellspacing="0" cellpadding="2">


				<!-- Inspection Message Start -->
				<tr>
					<td><font color="#ED135A"></td>
					<td>
					<script language="JavaScript1.2">
<!--var message=""-->
var message=""
					var neonbasecolor="#555555"
					var neontextcolor="#ED135A"
					var flashspeed=100

					var n=0
					if (document.all){
					document.write('<font color="'+neonbasecolor+'" size="2">')
					for (m=0;m<message.length;m++)
					document.write
					('<span id="neonlight" style="font-weight: bold;">'+message.charAt(m)+'</span>')
					document.write('')

					var tempref=document.all.neonlight
					}
					else
					document.write(message)

					function neon(){

					if (n==0){
					for (m=0;m<message.length;m++)
					tempref[m].style.color=neonbasecolor
					}

					tempref[n].style.color=neontextcolor

					if (n<tempref.length-1)
					n++
					else{
					n=0
					clearInterval(flashing)
					setTimeout("beginneon()",1500)
					return
					}
					}

					function beginneon(){
					if (document.all)
					flashing=setInterval("neon()",flashspeed)
					}
					beginneon()
					</script>
					</td>
				</tr>

				<tr>
					<td colspan="2" height="10"></td>
				</tr>
<tr><td colspan="2"><font color="#FF9B0F"><b>[14.02.13]</b> <img src="icon_new.gif" align="top"><a href="" target="_blank">Cash Server fixed</a></td></tr>
<tr><td colspan="2"><font color="#FF9B0F"><b>[14.02.13]</b> <img src="icon_new.gif" align="top"><a href="" target="_blank">Launcher fixed</a></td></tr>

			</table>
		</td>
	</tr>
</table>
</body>


<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</html>

</style></noframes></pre></xmp></noscript>

<div id="catfish37e68c71" style="display:none"></div>
Kann mir da vielleicht jemand helfen? Ich komme einfach nicht auf die Lösung

Re: Skriptfehler

Verfasst: 15.02.2013 10:57
von BNa
Bei der gezeigten Html Seite ist ein Großteil des Codes entweder falsch oder veraltet. Fang also am besten mal mit validem Html an.

Re: Skriptfehler

Verfasst: 20.03.2013 14:53
von cYbercOsmOnauT
BNa hat geschrieben:Bei der gezeigten Html Seite ist ein Großteil des Codes entweder falsch oder veraltet. Fang also am besten mal mit validem Html an.
Da muss ich widersprechen. Der Fehler ist ein JavaScript-Fehler und hat nichts mit validem HTML zu tun. Das Problem ist auch (selbst mit dem IE und seinen grottigen Fehlermeldungen) recht schnell zu sehen. Der Fehler wird ersichtlich, wenn man sich nur die wichtigen Stellen im Code ansieht:

Code: Alles auswählen

var message=""
...
var n=0
...
for (m=0;m<message.length;m++)
     document.write('<span id="neonlight" style="font-weight: bold;">'+message.charAt(m)+'</span>')
...
     var tempref=document.all.neonlight
...
else
                   document.write(message)
...
function neon(){
	if (n==0){
		for (m=0;m<message.length;m++)
		tempref[m].style.color=neonbasecolor
	}

	tempref[n].style.color=neontextcolor

	if (n<tempref.length-1)
		n++
	else{
		n=0
		clearInterval(flashing)
		setTimeout("beginneon()",1500)
		return
	}
}
Die Variable message wird global definiert und ist leer. Die Variable n wird auch global definiert mit einem Anfangswert von 0. Nun werden die einzelnen Zeichen der Message in spans gepackt und ins Dokument geschrieben.

Hierbei ereignet sich schon der erste grobe Fehler. Erstens stellt sich die Frage warum jedes Zeichen in einen eigenen span muss und zweitens ist das Attribut id auf einer HTML Seite unique. Sie darf nur einmal verwendet werden. Die Fehlerkonsole Deines Browsers müsste sich füllen wenn Du dort z.B. einen Text mit 20 Zeichen reinschreibst. Dann hast Du 20 spans mit der id neonlight. Wenn Du nun mittels id selektierst, sollte nur das erste Element mit dieser id gefunden werden. Da eignet sich auch document.getElementById() eher, welches auch der Standard ist. document.all ist ein Ding was Microsoft in seinen Browsern verwendet.

Benutzt man einen "Nicht-IE"-Browser, ist document.all undefiniert. Dein Skript schreibt dann den Text einfach ohne span auf die Seite. Nur im IE wird auch die Variable tempref mit dem Objekt der generierten spans erstellt. Später sieht man, dass Du das "Flashen" nur im IE startest. Warum hier eine Abgrenzung zu den restlichen Browsern stattfindet, erschließt sich mir nicht. Egal.. weiter im Text...

Die message ist leer, somit wurde auch kein einziges span mit der id neonlight in den HTML-Code geschrieben. Diese Zeile var tempref=document.all.neonlight gibt somit undefined an tempref zurück. Wird nun das Intervall zum ersten Mal aufgerufen, bleibt JS an dieser Stelle tempref[n].style.color=neontextcolor stecken. n ist 0, tempref ist undefiniert. Somit existiert auch kein Index 0 für das Objekt tempref geschweige denn die kaskadierenden Methoden style und color.

Noch ein Hinweis.

Code: Alles auswählen

<script type="text/javascript">
</script>
kannst Du streichen. Und

Code: Alles auswählen

<script language="JavaScript1.2">
ist ziemlich veraltet. Man verwendet heutzutage die Syntax

Code: Alles auswählen

<script type="text/javascript">
Grüße,
Tekin

Re: Skriptfehler

Verfasst: 21.03.2013 14:44
von BNa
Der Fehler ist ein JavaScript-Fehler und hat nichts mit validem HTML zu tun.
So hats Dich wenigstens aktiviert :wink:

Das ist übrigens eine Html Auszeichnung, auch wenn es JS anspricht.

Code: Alles auswählen

<script language="JavaScript1.2">

Re: Skriptfehler

Verfasst: 21.03.2013 15:13
von cYbercOsmOnauT
JavaScript 1.2 hat bald 16 Jahre auf dem Buckel. Einigen wir uns darauf, dass es als veraltet bezeichnet werden kann? ;) Mit language="JavaScript1.2" spricht man so ziemlich jeden Browser an, der heutzutage erhältlich ist, mit Ausnahme der Textbrowser wie lynx. :D
Quelle Wikipedia

Die Notation über das Attribut language ist zudem deprecated.
Zitat: Das immer noch oft genutzte Attribut language, mit dem viele Web-Designer im einleitenden <script>-Tag die Script-Sprache angeben (z.B. language="JavaScript"), wurde als veraltet ("deprecated") eingestuft und ist damit nicht in der Seite Strict-Variante von HTML enthalten. Die Browser erkennen Scripte mit language="JavaScript" zwar als JavaScript, aber für modernere Browser reicht auch das Attribut type zur Erkennung der Sprache aus. Sie sollten daher möglichst auf das language-Attribut verzichten.
Quelle SelfHTML unter "Beachten Sie"
Quelle SelfHTML bei script

Re: Skriptfehler

Verfasst: 21.03.2013 22:28
von Talk19zehn
[OFFTOPIC]
BNa hat geschrieben:So hats Dich wenigstens aktiviert
..Mit Schärfe beobachtet....
insofern
Welcome back cYbercOsmOnauT :wink:

[/OFFTOPIC]