xyz ist Null oder kein Objekt

Tim C.

Erfahrenes Mitglied
Ich bekomm hier echt 'nen Krampf. Stein des Anstoßes ist laut Internet Explorer die folgende Zeile
Code:
iView.document.body.innerHTML = sourceCode;
Er zeigt den Fehler, wie schon aus dem Betreffe zu erahnen, "iView.document.body ist Null oder kein Objekt" an. Fakt ist, ich versteh die Welt nicht mehr, weil wenn ich diese Datei so nutzen, wie es eigentlich gedacht ist, nämlich als include. Bekomme ich zwar 3-7 andere JS Fehler, aber diesen nicht mehr.
Wer noch wissen will, wie die Variable sourceCode definiert ist, der gucke hier:
Code:
var sourceCode = '<?php if(is_array($row)) { echo $row['content']; } else { echo "-"; }?>';
Es steht auch genau das nachher im Quelltext, was die Variable sourceCode sein soll aber irgendwie spuckt er halt den Fehler aus.

Vielleicht kann mir hier endlich geholfen werden, wenn das Problem aus der Welt ist, folgt direkt das nächste, es sei denn das löst sich damit auch, aber erstmal klein anfangen.
 
  • Die Zeile hier:
PHP:
var sourceCode = '<?php if(is_array($row)) { echo $row['content']; } else { echo "-"; }?>';
erzeugt einen Fehler, weil du mittem im String ' verwendest. Besser:
Code:
var sourceCode = "<?php if(is_array($row)) { echo $row['content']; } else { echo \"-\"; }?>";
  • Das document-Objekt hat die innerHTML Methode AFAIK nicht, dh. du musst den Body per ID ansprechen.
  • Wo kommt iView her?
    Das Objekt eines mit window.open geöffneten Fensters?
 
Nein iView ist ein iframe, welches ich als Editor verwende. Du erinnerst dich vielleicht ? Das WYSIWYG Online Editor "Problem" aus dem HTML Forum ;)

Danke das mit dem " statt ' werde ich gleich morgen testen.
 
Hallo Tim,

ich hab was gefunden :)
Die Eigenschaft innerHTML sollten Sie nicht direkt beim Einlesen der HTML-Datei anwenden, sondern immer erst abhängig von Aktionen wie Verweisklicks oder Buttonklicks oder mit einem setTimeout() von einigen Sekunden davor. Bei Anwendung direkt beim Einlesen der Datei meldet der MS Internet Explorer 4.0 einen Laufzeitfehler.
Quelle: Selfhtml

Also hab ich die init-Funktion mal geändert...
Code:
  var sourceCode = 'trallala';
  function Init(){
    iView.document.designMode = 'On';
    window.setTimeout("iView.document.body.innerHTML = sourceCode",1000);
  }

und siehe da - es geht ohne Fehlermeldung :)

ciao Andreas
 
Zuletzt bearbeitet:
Was wär ich blos ohne Andreas ;) Es geht und der Content wird sogar sofort in die Box geladen. *freu*
 
Zuletzt bearbeitet:
So nun ist das "einzige" Problem was ich noch habe, dass wenn der Sourcecode, den ich einlade, ein Tabellenkonstrukt enthält, ich folgende Fehlermeldungen bekomme:
Code:
1)
Zeile: 201 (ok das bringt euch wenig)
Fehler: Objekt erwartet

2)
Zeile: 201
Fehler: Objekt erwartet

3)
Zeile: 185
Fehler: Objekt erwartet

4)
Zeile:  39
Fehler: Nicht abgeschlossene Zeichenfolgenkonstante
Das Problem ist, durch mehrfachen include, weiss ich nicht genau, wie ich die Zeilen zählen soll.

Ja Tatsache, der Fehler in Zeile 201 tritt zweimal auf, sogar beide male in Zeichen: 1.

Achja vielleicht hilft es weiter, wenn die Tabelle im Source steht, wird dieser überhaupt nicht mehr in die Box geladen, sondern wird unter dieser dargestellt.
 
Wie sieht der Sourcecode denn aus....
werden alle Sonderzeichen(Anführungszeichen,spitze Klammern) in htmlentities umgewandelt,und einfache Anführungszeichen escaped?
 
Hallo,

ich denke auch das durch den Source aus der DB irgendein String nicht geschlossen ist und dadurch ein fehler auftritt. Lass dir den Sourcescode mit Tabelle mal via Alert ausgeben, bevor du ihn in den Iframe Schreiben lässt - vielleicht siehst da was.. Ansonsten kommt man ohne aktuellen Sourcecode mit den Fehlermeldungen nicht wirklich weiter :)

bye
 
Zurück