JavaScript is null oder kein object unter IE

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hallo

Problem mit dem Script unter Internet Explorer 7,8,9

Code:
var scriptURL = 'cgi-bin/minichat.cgi';
 var scriptREFRESH = 5;
 var xmlHttp = false;
 try {
  xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
 } 
 catch(e) {
 try {
  xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
 } 
 catch(e) {
  xmlHttp  = false;
  }
 }
 if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
 }
 
  setInterval("loadMinichat()", scriptREFRESH*1000);
  loadMinichat();
 
 
 function loadMinichat() {
 
 if(xmlHttp) {
 var timestamp = new Date().getTime();
  xmlHttp.open('GET' , scriptURL + '?func=minichat&nocache=' + timestamp , true);
  xmlHttp.onreadystatechange = function() {
 if(xmlHttp.readyState == 4) {
 
[B]//diese zeile bemängelt IE, es wäre kein Object.....[/B]
 document.getElementById("minichattext").innerHTML = xmlHttp.responseText;
 
  }
 };
  xmlHttp.send(null);
  }
 }
 
 function saveMinichat() {
 if(xmlHttp) {
 var timestamp = new Date().getTime();
  xmlHttp.open('POST', scriptURL);
  xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlHttp.onreadystatechange = function() {
 if(xmlHttp.readyState == 4) {
  document.getElementById("minichatform").chattext.value = '';
 if(!document.getElementById("minichatform").chatname.value) {
  document.getElementById("minichatform").chatname.focus();
 } 
 else {
  document.getElementById("minichatform").chattext.focus();
 }
 
  loadMinichat();
  }
 }
 
  xmlHttp.send('mcname='+document.getElementById("minichatform").chatname.value+'&mctext='+document.getElementById("minichatform").chattext.value+'&nocache='+timestamp);
 }
 }

Das Script ist im Head der Seite eingebunden, mit FF, Opera usw. gibt es keine Probleme, nur halt mit dem IE.

Wenn ich loadMinichat(); aus dem Script nehme und es an der Stelle direkt in die Seite
eintrage dann sagt der IE auch nichts mehr nur kann das doch nicht ok sein.
Ich nehme an das der IE die Seite anders lädt als die restlichen Browser, also das JavaScript geladen und ausgeführt wird obwohl der HTML Teil noch nicht da ist und es dann halt noch kein id="minichattext" gibt.

Eventuell kennt hier jemand eine Möglichkeit? auch mit <body onload=... gibt der IE die Fehlermeldung aus das Null oder kein Object.

Gruß
Belee

EDIT: Zurzeit läuft es so das ich loadMinichat(); direkt in die Seite mit <script ... eingebunden habe, deshalb gibt es jetzt keine Fehler unter IE, aber wie schon gesagt, das kann es ja nicht sein.
 
Zuletzt bearbeitet:
Was ist denn da laut IE kein Objekt? xmlHttp? document? =)

Meine Empfehlung wäre ja, jQuery zu benutzen (oder ein anderes Javascript-Framework), damit programmiert es sich wesentlich bequemer und browserunabhängiger.
 
er bemängelt

document.GetElementById(..)

welches habe ich ja oben markiert.
 
Neben der Verwendung eines Frameworks wie JQuery - was ich für angebracht halte- was spricht gegen einer Prüfung ob das Element überhaupt existiert bevor es weiter "verarbeitet" wird?
 
Ich habe die Erfahrung gemacht, dass es für IE kein Unterschied macht ob es jetzt null oder nicht null ist. Meine Lösung war (habe heute selbst durch die Arbeit erfahren), einfach in den String zu umwandeln.

PHP:
e=d[i].getAttribute('title', 2);
if(e != null && e.length > 0){}

Die Erkennung funktioniert und der Springt nicht mehr in die IF Abfrage rein. Wenn man nur e.length oder nur e!=null macht, Springt der IE aber rein.
 
Verstehe jetzt nicht ganz was du meinst, ich habe wegen dem Problem das halbe Netz abgegrasst aber nirgendwo eine Lösung gefunden. Wenn das die Lösung ist, sag mir mal bitte wo bzw. wie die jetzt in dem Script anzuwenden ist.
Danke.
 
Es war eine Schlafe über alle HTML Elemente... Hier im Code ging es nur darum den passenden Element herauszusuchen der einen Attribute Title hat. 2 Steht, dass es ein String zurückgegeben wird.

Es ist ein JS Code. Ich habe selbst gemerkt, dass wenn kein Title gefunden wurde (hierbei kannst du auch nach der ID suchen, ist eigentlich egal was du suchst), springt der trotzdem in der IF Abfrage, obwohl in der Beschreibung nur dann NULL zurückgegeben wird, wenn es keinen Attribute mit dem "Namen" gibt.
 
Zurück
Oben