hesst: document.open in onreadystatechange funktioniert nicht im IE

Beitrag lesen

Hi,
@Cybaer

Nochmal: Verzichte auf open() ganz, und dein Problem ist gelöst.

Das ist wohl war, nur muß es doch auch über open, write, close gehen, bzw. geht es das auch lokal mit IE, Mozilla, Opera, Safari und auf dem Server mit Mozilla, Opera.
Warum soll es mit open nicht gehen?

PS: Nicht, daß ich mich nie irren würde. Aber ich bin hier nicht derjenige, der ein Problem hat. Und wenn Du es besser weißt, warum bittest Du dann andere überhaupt um Hilfe?

Sage ich es mal anders, ich hätte gerne eine Lösung für das Open-Problem und nicht als Lösung auf open zu verzichten.

@Harlequin

Wozu erst mittels Ajax einen asynchronen Request im Hintergrund durchführen, wenn man dann eh die komplette Seite wegwirft und neu aufbaut?

Der asynchrone Request ist eigentlich nur reingekommen, da xmlDoc.load(xmlFile); nur von einigen Browsern unterstützt wird.

// so war es mal
// Die Fkt. view ist die funktion mit dem besagten open
function show(xmlFile)
{
  if (document.implementation && document.implementation.createDocument)
  {
    xmlDoc = document.implementation.createDocument("", "", null);
    xmlDoc.async = false;
  }
  else if (window.ActiveXObject)
  {
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
  }
  else
  {
    alert('Your browser can't handle this script');
    return;
  }
  xmlDoc.load(xmlFile);
  var root = xmlDoc.documentElement;
  view(root, xmlFile);
}

// so ist es jetzt
// Die Fkt. view übergebe ich als func
function loadXML(strFileName, func, param)
{
  var xmlHttpRequest = null;
  var client = new clientProperties();
  if (window.XMLHttpRequest && !client.isIE7)
  {
   xmlHttpRequest = new XMLHttpRequest();
   if (xmlHttpRequest.overrideMimeType)
   {
    xmlHttpRequest.overrideMimeType('text/xml');
   }
  }
  else if (window.ActiveXObject)
  {
   try
   {
    xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
   }
   catch (e)
   {
    try
    {
     xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      alert('Your browser can't handle this script');
        return;
    }
   }
  }
  xmlHttpRequest.open("GET", strFileName, true);
  xmlHttpRequest.onreadystatechange = function()
  {
    if (xmlHttpRequest.readyState == 4
      && (xmlHttpRequest.status == 200 || xmlHttpRequest.status == 0))
    {
      if (xmlHttpRequest.responseXML == null)
      {
        if (xmlHttpRequest.status != 0)
        {
          loadDOM(strFileName, func, param);
        }
      }
      else if (xmlHttpRequest.responseXML.documentElement == null)
      {
        if (xmlHttpRequest.status != 0)
        {
          loadDOM(strFileName, func, param);
        }
        else
        {
          // Local failure, try using DOM to load
          var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async = false;
          xmlDoc.loadXML(xmlHttpRequest.responseText);
          var root = xmlDoc.documentElement;
          if (xmlDoc.documentElement != null)
          {
            func(root, param);
          }
          else
          {
            loadDOM(strFileName, func, param);
          }
        }
      }
      else
      {
        var root = xmlHttpRequest.responseXML.documentElement;
        if (xmlHttpRequest.responseXML.documentElement != null)
        {
          func(root, param);
        }
        else
        {
          loadDOM(strFileName, func, param);
        }
      }
   }
  }
  xmlHttpRequest.send(null);
}

function loadDOM(strFileName, func, param)
{
  if (document.implementation && document.implementation.createDocument)
  {
    xmlDoc = document.implementation.createDocument("", "", null);
    xmlDoc.async = false;
  }
  else if (window.ActiveXObject)
  {
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
  }
  else
  {
    alert('Your browser can't handle this script');
    return;
  }
  xmlDoc.load(strFileName);
  var root = xmlDoc.documentElement;
  func(root, param);
}