IE - sporadischer JS-Fehler ?!
Miky
- javascript
Tach,
"finde den Unterschied":
A)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
kdsjhg // <-- Hierauf kommt´s an (?)
<title>n Titel eben</title>
<meta http-equiv="Content-Language" content="de" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<meta http-equiv="imagetoolbar" content="no" />
[...]
B)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>n Titel eben</title>
<meta http-equiv="Content-Language" content="de" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<meta http-equiv="imagetoolbar" content="no" />
[...]
So. Die schnellen Augen haben natürlich den Unterschied gefunden. Das fehlende "kdsjhg". Der eigentliche Unterschied ist aber: Version A produziert keine JS-Fehlermeldung im IE, Version B schon!
Zur Info: Die Skripte der Seite funktionieren, FF-JS-Konsole gibt auch keine Fehler aus. Lustigerweise gibt auch der IE keinen Fehler aus, solange die Seite per URL aufgerufen wird. Sobald jedoch die gleiche Seite per Link aufgerufen wird, gibt´s nen "Objekt erwartet"-Fehler in Zeile 7, Zeichen 7. Wie gesagt, NUR bei Version B.
Das "kdsjhg" hatte ich eigentlich nur eingefügt, um die Zeilenangabe mal etwas genauer rauszufinden (ob sich dann der Fehler in Zeile 8 finden würde), und schon brachte der IE (6.0) den Fehler nicht mehr.
Macht das Sinn?! Falls ja, würde mich das echt interessieren. Schließlich hat mich der Kram jetzt schon wieder kostbare zwei Stunden gekostet...
Weitere Frage in diesem Zusammenhang: Wie ermittelt der IE eigentlich die Angabe der fehlerhaften Zeile? Vor dem geposteten Code sind noch einige Zeilen PHP (ohne jegliches JS), und Zeile 7 zeigt ja nunmal nur auf eine Meta-Angabe? Kann man mit der IE-JS-Fehlermeldung überhaupt was anfangen (im weiteren Sinne, also wenn eben die FF-JS-Konsole nix anzeigt)?
Gruß & danke im Voraus,
Michael
Hi,
Macht das Sinn?!
es kommt häufiger vor, dass der IE etwas richtig macht, wenn man etwas falsch macht. Das muss keinen Sinn machen und ist trotzdem normal.
Weitere Frage in diesem Zusammenhang: Wie ermittelt der IE eigentlich die Angabe der fehlerhaften Zeile?
Das tut er nicht. Die fehlerhafte Zeile ermittelt kein mir bekannter Browser, sondern immer nur die Zeile, in der ein Fehler aufgetreten ist. Und das macht der IE AFAIK nicht schlechter als andere. Die Meldungen dabei sind aussageärmer.
Vor dem geposteten Code sind noch einige Zeilen PHP
Wenn irgend ein Browser oder andere Client auch nur die Spur von PHP-Code erhält, dann hast Du noch ganz andere Probleme.
und Zeile 7 zeigt ja nunmal nur auf eine Meta-Angabe?
Zeile 7 des HTML-Dokumentes, oder Zeile 7 einer JavaScript-Ressource?
Kann man mit der IE-JS-Fehlermeldung überhaupt was anfangen
Keine Ahnung, Du hast "die" IE-JS-Fehlermeldung ja nicht mal genannt.
Cheatah
Hi,
Macht das Sinn?!
es kommt häufiger vor, dass der IE etwas richtig macht, wenn man etwas falsch macht. Das muss keinen Sinn machen und ist trotzdem normal.
Andersrum: Es ist richtig gemacht, der IE zeigt falsch an. IMHO.
Weitere Frage in diesem Zusammenhang: Wie ermittelt der IE eigentlich die Angabe der fehlerhaften Zeile?
Das tut er nicht. Die fehlerhafte Zeile ermittelt kein mir bekannter Browser, sondern immer nur die Zeile, in der ein Fehler aufgetreten ist. Und das macht der IE AFAIK nicht schlechter als andere. Die Meldungen dabei sind aussageärmer.
Hihi. Okay. Also: "Wie ermittelt der IE eigentlich die Angabe der Zeile, in der ein Fehler aufgetreten ist/sein soll?"
Vor dem geposteten Code sind noch einige Zeilen PHP
Wenn irgend ein Browser oder andere Client auch nur die Spur von PHP-Code erhält, dann hast Du noch ganz andere Probleme.
Ja. Ich weiß. Und ich weiß auch, dass du grundsätzlich erst einmal davon ausgehst, dein Gegenüber sei ein Schafskopf.
In deinem Stile: "Wenn PHP _angezeigt_ wird, ist es kein PHP mehr." Soll heißen: Es wird kein PHP an den Browser ausgeliefert.
und Zeile 7 zeigt ja nunmal nur auf eine Meta-Angabe?
Zeile 7 des HTML-Dokumentes, oder Zeile 7 einer JavaScript-Ressource?
Unter anderem nach einer Antwort hierauf lechzte mein Ausgangsposting. Ich weiß es ja nunmal nicht. Eine externe JS-Datei war beim ersten Versuch nicht vorhanden. Geht also die Zeilenangabe auf Zeile 7 eines Dokuments ein oder Zeile 7 aller JS-Skriptbereiche oder eben sogar auf Zeile 7 einer externen JS-Datei, falls vorhanden, und wie sieht es aus, wenn ext. und int. JS vorhanden ist? Fragen über Fragen. Ich weiß es nicht. Drum frag ich ja.
Kann man mit der IE-JS-Fehlermeldung überhaupt was anfangen
Keine Ahnung, Du hast "die" IE-JS-Fehlermeldung ja nicht mal genannt.
Nich? "Objekt erwartet"-Fehler in Zeile 7, Zeichen 7."
Hat sich mittlerweile übrigens eledigt. Nicht dass ich wüßte, warum. Der betreffende JS-Teil ist nun ausgelagert in einer externen Datei, seitdem tritt der beschriebene Effekt nicht mehr auf. Warum, kann ich nicht mal ansatzweise nachvollziehen.
Gruß,
Michael
Hi,
Andersrum: Es ist richtig gemacht, der IE zeigt falsch an. IMHO.
Der Parser vom IE ist extrem fehlertolerant und schluckt einfach alles (stammt wohl noch aus Mosaic Zeiten). Da Du ja sagst, das über der Doctype noch PHP Code steht, hast Du bei der Ausgaberoutine in Deinem Script Mist gebaut. Der IE kennt da aber nix, der parst das trotzdem. Der weitere Bearbeiter kann da aber nix mit anfangen und verabschiedet sich mit dieser hübschen Fehlermeldung.
Beide, der IE und Du, machen es also ein klein wenig falsch und das summiert sich dann.
Hihi. Okay. Also: "Wie ermittelt der IE eigentlich die Angabe der Zeile, in der ein Fehler aufgetreten ist/sein soll?"
Wie jeder andere auch: letzte geparste Zeile wird ausgegeben _bei_ der der Fehler auftritt, nicht _in_. Die Zeilennummer und der Fehler haben also nicht zwingend _direkt_ etwas miteinander zu tun.
Ohne echten Debugger stehst Du bei solch' mageren Fehlermeldungen also ganz schön auf dem Schlauch.
Vor dem geposteten Code sind noch einige Zeilen PHP
Wenn irgend ein Browser oder andere Client auch nur die Spur von PHP-Code erhält, dann hast Du noch ganz andere Probleme.
Ja. Ich weiß. Und ich weiß auch, dass du grundsätzlich erst einmal davon ausgehst, dein Gegenüber sei ein Schafskopf.
Normalisiert man die übliche Differenz zwischen Cheatah und dem durchschnittlichen Frager ist das nicht wirklich falsch.
Repariere also erstmal Dein/e PHP-Script/httpd.conf und wenn das dann immer noch das gleiche Ergebnis zeitigt, dann darfst Du Dich auch über Cheatahs Stil mokieren.
In deinem Stile: "Wenn PHP _angezeigt_ wird, ist es kein PHP mehr." Soll heißen: Es wird kein PHP an den Browser ausgeliefert.
Aber der Code, und da der Parser vom IE alles schluckt kann das zu Ärger führen und vor allem zu _sehr_ merkwürdigen Fehlern. Muß aber nicht.
Unter anderem nach einer Antwort hierauf lechzte mein Ausgangsposting. Ich weiß es ja nunmal nicht.
Warum postest Du dann nicht mal den Code oder einen Link oder noch besser: das kleinste Stückchen Code mit dem sich der Fehler reproduzieren läßt?
Kann man mit der IE-JS-Fehlermeldung überhaupt was anfangen
Keine Ahnung, Du hast "die" IE-JS-Fehlermeldung ja nicht mal genannt.
Nich? "Objekt erwartet"-Fehler in Zeile 7, Zeichen 7."
Ja, das ist eine echt typische IE-Fehlermeldung Cheatah, das solltest Du eigentlich wissen. ;-)
Hat sich mittlerweile übrigens eledigt. Nicht dass ich wüßte, warum.
Wenn Du das nicht weißt hat sich das auch nicht erledigt.
Der betreffende JS-Teil ist nun ausgelagert in einer externen Datei, seitdem tritt der beschriebene Effekt nicht mehr auf. Warum, kann ich nicht mal ansatzweise nachvollziehen.
Das ist ein Workaround, keine Lösung.
Möchtest Du denn den nächsten mit dem gleichem Problem einfach auflaufen lassen? Mich hat ja alleine schon die Tatsache aufmerksam gemacht, das sogar Cheatah bei dem Problem nur mit den Achseln zucken konnte!
so short
Christoph Zurnieden