Skriptfehler

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Christina92
Mitglied
Beiträge: 1
Registriert: 15.02.2013 07:46

Skriptfehler

Beitrag 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
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Skriptfehler

Beitrag 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.
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Skriptfehler

Beitrag 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
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Skriptfehler

Beitrag 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">
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Skriptfehler

Beitrag 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
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 5016
Registriert: 08.06.2009 12:03

Re: Skriptfehler

Beitrag von Talk19zehn »

[OFFTOPIC]
BNa hat geschrieben:So hats Dich wenigstens aktiviert
..Mit Schärfe beobachtet....
insofern
Welcome back cYbercOsmOnauT :wink:

[/OFFTOPIC]
Adventereigniskalender für phpBB 3.3.x,
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren. Präteritum, Perfekt, Präsens, Futur & Plusquamperfekt werden nicht fehlerfrei genutzt, gar missverstanden.
Antworten

Zurück zu „Coding & Technik“