document.write im IE mit Fehlermeldung
kye-raz1
- javascript
Hallo Leute, ich habe ein script geschrieben das vorwiegend mit document.write arbeitet....
Der Netscape führt mein script ohne mucken aus ( was eigentlich für einen sauberen code sprechen sollte
wenn der Netscape keine Probleme macht..... )
Der Explorer jedoch bringt mir an unregelmäßigen Zeitpunkten aber jedesmal bei einer document.write
Routine die Fehlermeldung:
die Anweisung "xyz" verweist auf Speicher "xyz".
Der Vorgang "read" konnte nicht ausgeführt werden.
Danach verabschiedet sich der Explorer und schließt sich mit dem Abschiedsgruß:
Es ist ein interner Fehler aufgetreten....
Ich habe meinen Code schon mehrmals umgeschrieben und Korrektur gelesen
aber der Fehler tritt immer wieder auf auch unter Explorern anderer Rechner.
Kann mir jemand vielleicht sagen in welcher Richtung ich den Fehler ungefähr suchen soll?
Oder irgendetwas über die Eigenschaften der Fehlermeldung so daß ich einen bestimmten
Bereich meines scripts zur Fehlermeldung einkreisen kann bzw, welche Art von Fehlern
solche Meldungen hervorruft.Vielleicht verletzt ich irgendwo die Security-Policy des IE ???
Hi !
Wenn Du uns ein Stückchen Quellcode zukommen lässt, kann Dir sicher geholfen werden :-)
Cya,
Harry
ok hier der source,der Fehler ist wahrscheinlich in der function schreibneu oder bad zu finden........
var todo = "<head><style type=text/css>font.todo {font-size:9pt; color:#FFFFFF;font-weight:bold; font-family:tahoma,arial} </style></head><table align=center width=440 cellspacing=0 cellpadding=0 border=0><tr><td bgcolor=#477F0B nowrap><font class=todo><center> <br>Ergänzen Sie die Lücken im Text!<br> </center></font></td></tr><tr><td> </td>"
//Anzahl der SelBoxen
var Anzahl = 7
var basis = "<html>"
var green = "<font color=#118811>"
//Definition für form
var fend = "</table></html>"
//Definition für Texteile!
var Anfang = "<body bgcolor=#FFE7AA></body>" + todo
var falsch = "Ihre Eingabe ist nicht richtig! Lösung anzeigen?"
//Textressourcen
text = new Array();
text[1] = " sucht Arbeit? [Heinz Koslowski]"
text[2] = " sucht Heinz Koslowski? [Arbeit]"
text[3] = " geht jeden Monat aufs Arbeitsamt? [Heinz Koslowski]"
text[4] = " geht Heinz Koslowski jeden Monat? [aufs Arbeitsamt]"
text[5] = " ist er? [zu alt]"
text[6] = " erzählt er, dass er zu alt ist? [seiner Frau]"
text[7] = " findet in der Zeitung eine interessante Anzeige? [Vera]";
text[8] = " findet Vera in der Zeitung? [eine interessante Anzeige]"
text[9] = " ruft ihr Mann an? [in Köln]"
text[10] = " zeigt Herr Becker die neue Wohnung? [Koslowskis]"
text[11] = " zeigt Herr Becker Koslowskis? [die neue Wohnung]"
text[12] = " möchte Marion nicht wechseln? [die Schule]"
text[13] = " kann Marion wohnen ?[in der Wohnung von Familie Mertens]"
text[14] = " ist sie schon ? [ein großes Mädchen]"
//Lösungswörter
richtig = new Array();
richtig[1] = "Wer"
richtig[2] = "Was"
richtig[3] = "Wer"
richtig[4] = "Wohin"
richtig[5] = "Was"
richtig[6] = "Wem"
richtig[7] = "Wer"
richtig[8] = "Was"
richtig[9] = "Wen"
richtig[10] = "Wem"
richtig[11] = "Was"
richtig[12] = "Was"
richtig[13] = "Wo"
richtig[14] = "Was"
function yaright(so){
parent.main.document.write("<tr><td>" + typer[so] + "<font face='tahoma,arial' size=-1>" + text[so] + "</font></form></td></tr>")
parent.main.document.close
}
//Auflösung bei richtig
function schreibneu(l){
parent.main.document.open()
parent.main.document.clear()
parent.main.document.write(basis + Anfang)
parent.main.document.close
for (so = 1; so <= Anzahl; so++){
if (right[so] != 1)
{yaright(so)
}
else {
parent.main.document.write( "<tr><td><font face=tahoma,arial color=#118811 size=-1><b>" + richtig[so] + "</b></font><font face=tahoma,arial size=-1>" + text[so] + "</font></td></tr>")
parent.main.document.close
}
}
parent.main.document.write(fend)
if (l){
var d=0;
for (c=1;c <= Anzahl;c++){
if (right[c] == 1)
{d++}
}
}
//wenn die letzte Box richtig ausgefüllt wird
if (d == Anzahl)
{
alert(" Herzlichen Glückwunsch !\ Sie haben die Aufgabe erfolgreich gelöst! ");
}
}
//Definition der type-felder
typer = new Array()
for (k=1;k<=Anzahl;k++)
{
typer[k] = "<form name=f"+k+" onSubmit='return parent.coder.bad(t"+k+","+k+")'><input type='text' name='t"+k+"' size=4></input>"
}
//erstellen der aufgabe
function comp()
{
for (i=1;i< Anzahl;i++){
//generieren der selectors
parent.main.document.write("<tr><td><font face=tahoma,arial size=-1>" + typer[i] + text[i] +"</font></form></td></tr>")
}
}
//generieren der html/basis
if (!parent.main.neu)
{
parent.main.document.write(Anfang);
//right[] = 0 steht für unaufgelöste Felder
right = new Array;
right[1] = 0;
right[2] = 0;
right[3] = 0;
right[4] = 0;
right[5] = 0;
right[6] = 0;
right[7] = 0;
//erstellen des main-parts
comp();
//End-tags
parent.main.document.write(fend)
parent.main.neu = 1;
}
//überprüfungs-routine
function bad (namo,nummer)
{
parent.main.neu = 1;
if (namo.value == richtig[nummer])
{
right[nummer] = 1;
schreibneu(nummer)
}
else{
if (confirm(falsch))
{
right[nummer] = 1;
schreibneu(nummer)
}
else namo.value="";
}
return false;
}
Hi !
Zum ersten mal fehlt in sehr vielen Zeilen der abschliessende Strichpunkt: ;
var todo = "<head><style type=text/css>font.todo {font-size:9pt; color:#FFFFFF;font-weight:bold; font-family:tahoma,arial} </style></head><table align=center width=440 cellspacing=0 cellpadding=0 border=0><tr><td bgcolor=#477F0B nowrap><font class=todo><center>
Ergänzen Sie die Lücken im Text!
</center></font></td></tr><tr><td> </td>"
Hier sind schon mal die ersten Fehler: vor einen Slash (/) muß da immer ein Escape-Zeichen hin, also /
Außerdem solltest Du vor <table> ein <body> setzen.
//Anzahl der SelBoxen
var Anzahl = 7
var basis = "<html>"
var green = "<font color=#118811>"//Definition für form
var fend = "</table></html>"//Definition für Texteile!
passt alles, aber
var Anfang = "<body bgcolor=#FFE7AA></body>" + todo
ist ein Schmarn: Du machst den body auf und dann gleich wieder zu und klebst dann den Head dahinter
var falsch = "Ihre Eingabe ist nicht richtig! Lösung anzeigen?"
//Textressourcen
text = new Array();text[1] = " sucht Arbeit? [Heinz Koslowski]"
text[2] = " sucht Heinz Koslowski? [Arbeit]"
text[3] = " geht jeden Monat aufs Arbeitsamt? [Heinz Koslowski]"
text[4] = " geht Heinz Koslowski jeden Monat? [aufs Arbeitsamt]"
text[5] = " ist er? [zu alt]"
text[6] = " erzählt er, dass er zu alt ist? [seiner Frau]"
text[7] = " findet in der Zeitung eine interessante Anzeige? [Vera]";
text[8] = " findet Vera in der Zeitung? [eine interessante Anzeige]"
text[9] = " ruft ihr Mann an? [in Köln]"
text[10] = " zeigt Herr Becker die neue Wohnung? [Koslowskis]"
text[11] = " zeigt Herr Becker Koslowskis? [die neue Wohnung]"
text[12] = " möchte Marion nicht wechseln? [die Schule]"
text[13] = " kann Marion wohnen ?[in der Wohnung von Familie Mertens]"
text[14] = " ist sie schon ? [ein großes Mädchen]"
//Lösungswörter
richtig = new Array();richtig[1] = "Wer"
richtig[2] = "Was"
richtig[3] = "Wer"
richtig[4] = "Wohin"
richtig[5] = "Was"
richtig[6] = "Wem"
richtig[7] = "Wer"
richtig[8] = "Was"
richtig[9] = "Wen"
richtig[10] = "Wem"
richtig[11] = "Was"
richtig[12] = "Was"
richtig[13] = "Wo"
richtig[14] = "Was"
Ist soweit auch ok.
function yaright(so){
parent.main.document.write("<tr><td>" + typer[so] + "<font face='tahoma,arial' size=-1>" + text[so] + "</font></form></td></tr>")
gleicher Fehler wie oben: /
parent.main.document.close
}
//Auflösung bei richtigfunction schreibneu(l){
parent.main.document.open()
parent.main.document.clear()
passt (glaub ich)
parent.main.document.write(basis + Anfang)
^^^^^^^^^^^^^^
Gibt mit obgiem Fehler aus "Anfang" vollkommen schwachsinnigen HMLT-Code
parent.main.document.close
for (so = 1; so <= Anzahl; so++){
...
undsoweiterundsofort ...
Du merkst, daß die Fehler immer die gleichen sind.
So wie Dein Skript im Moment aussieht, kannst Du froh sein, daß der Browser nicht das gesamte OS mit in den Abgrund gerissen hat ;-)
Dann sind da noch ein paar Variablen, die in der einen Funktion erzeugt werden aber nicht public sind, die Du aber versuchst, in einer anderen Funktion auszulesen usw.
Am besten Du arbeitest erst nochmal an dem Skript. Wenn's dann immer noch nicht geht, sag bescheid.
Cya,
Harry