Marc Reichelt: XMLHttpRequest offline verwenden? Bitte kurz testen!

Hallo an alle,

ich möchte gerne eine bzw. mehrere XML-Dateien mit JavaScript laden.
Dies soll sowohl online als auch offline funktionieren (vor allem offline!).

Hierzu habe ich zwei Testdateien erstellt, eine HTML- und eine XML-Datei, die ihr hier findet: http://marcreichelt.de/misc/selfhtml/xmlhttprequest/

Bitte ladet diese kurz herunter und schreibt mir, ob die XML-Datei geladen werden kann, wenn ihr die HTML-Datei offline öffnet.

Bereits getestet habe ich dies mit folgenden Browsern:
Firefox 2 (Linux) - funktioniert
Firefox 2 (Windows XP) - funktioniert
Konqueror 3.5.8 (Linux) - funktioniert
Internet Explorer 8 Beta (Windows XP) - funktioniert NICHT

Insbesondere interessant wären neuere Versionen von Opera, Safari sowie IE in Version 6 und 7.
Und dann würde ich gerne wissen, wie man das Laden einer XML-Datei im Offline-Modus in den Browsern, wo es auf meinen kurzen Test hin nicht geht, hinbekommt.

Grüße & vielen Dank

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  1. Insbesondere interessant wären neuere Versionen von Opera, Safari sowie IE in Version 6 und 7.

    ich habe es mit opera 9.24 und ie 5.0 getestet, da geht es

  2. hi $name,

    opera 9.26 - OK
    IE6 - OK
    Netscape 2006 - OK (der am 1. märz verstorben ist)
    IE8 BETA1 / IE7 (emuliert vom 8er) - zickt (obwohl ich alle sicherheitseinstellungen auf den niedrigsten level gesetzt habe, und auf nachfrage auf "allow blocked contents"):
    Webpage Script Errors

    User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Timestamp: Fri, 4 Apr 2008 18:46:34 UTC

    0.
    Message: Zugriff verweigert

    Line: 31
    Char: 6
    Code: 0
    URI: file:///C:/area51/SELF%20TEST/xmlhttprequest_offline.html

    gruss
    shadow

    --
    Programmers don´t die, they GOSUB without RETURN.
    Quelle: unbekannt
  3. Hallo,

    Safari 3.1 und Firefox 2 unter Mac OS 10.2 gehen.

    Ciao

  4. Hallo,

    Und dann würde ich gerne wissen, wie man das Laden einer XML-Datei im Offline-Modus in den Browsern, wo es auf meinen kurzen Test hin nicht geht, hinbekommt.

    Ich weiß nicht, ob das besser geht, aber es gibt noch die load-Methode bei XMLDocument im Gecko, solche Objekte erzeugt man mit document.implementation.createDocument. Im IE gibts das ActiveX-Objekt Microsoft.XMLDOM ebenfalls mit der load-Methode, soweit ich mich erinnere (siehe Archiv oder http://www.quirksmode.org/dom/importxml.html).

    Mathias

    1. Hallo molily,

      Ich weiß nicht, ob das besser geht, aber es gibt noch die load-Methode bei XMLDocument im Gecko, solche Objekte erzeugt man mit document.implementation.createDocument. Im IE gibts das ActiveX-Objekt Microsoft.XMLDOM ebenfalls mit der load-Methode, soweit ich mich erinnere (siehe Archiv oder http://www.quirksmode.org/dom/importxml.html).

      Das klingt definitiv interessant.
      Durch die Probleme des IE7 / IE8 mit dem XMLHttpRequest werde ich jetzt wohl doch direkt JS-Dateien nachladen (das scheint offline besser zu funktionieren als mit XML).

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      panic("Oh boy, that early out of memory?");
              linux-2.2.16/arch/mips/mm/init.c
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      1. Hallo,

        Durch die Probleme des IE7 / IE8 mit dem XMLHttpRequest werde ich jetzt wohl doch direkt JS-Dateien nachladen (das scheint offline besser zu funktionieren als mit XML).

        Solange du keinen speziellen Grund hast, XML zu verwenden, solltest du es in diesem Zusammenhang ohnehin nicht tun. Wenn du einfacher auf die Daten zugreifen kannst, wenn sie direkt in JSON im Script untergebracht sind, dann tu es.

        Wobei man natürlich zwischen ursprünglicher Datenspeicherung und Datenübermittlung für das JavaScript unterscheiden sollte. JSON ist nicht unbedingt das Format, um die Datenbasis selbst zu speichern, aber JSON ist relativ einfach on-the-fly generierbar für JavaScript-Anwendungen.

        Mathias

        1. Hallo molily,

          Solange du keinen speziellen Grund hast, XML zu verwenden, solltest du es in diesem Zusammenhang ohnehin nicht tun. Wenn du einfacher auf die Daten zugreifen kannst, wenn sie direkt in JSON im Script untergebracht sind, dann tu es.

          JSON kannte ich bislang noch nicht (bzw. nicht explizit unter diesem Namen).
          Sieht interessant aus. Ist die Notation in JSON besser (performanter) als beispielsweise folgende Notation?

          results = new Array(  
           new Result(0, 'url0'),  
           new Result(1, 'url1'),  
           new Result(2, 'url2')  
          );  
            
          index = new Array(  
           new Index(0, 'a'),  
           new Index(1, 'b'),  
           new Index(2, 'c'),  
           new Index(3, 'd'),  
           new Index(4, 'e'),  
           ...  
          );
          

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          panic("Oh boy, that early out of memory?");
                  linux-2.2.16/arch/mips/mm/init.c
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
          1. Hi,

            was ist eigentlich der Hintergrund dieses Threads XML ist doch kein Problem. Das Problem dabei ist nur, dass es nicht domainübergreifend funktioniert.

            JSON kannte ich bislang noch nicht (bzw. nicht explizit unter diesem Namen).

            Und genau dafür ist dann JSON geeignet.
            Ist ein hochtrabender Name, eigentlich ist es nur ein Array, das man direkt per JS einlesen kann.

            Guck mal hier, das ist genau eine Anwendung in der Art, die das nutzt:
            http://www.rusch-hour.com/sms2web-demo.html
            die Daten holt sich Gerät aus:
            http://www.rusch-hour.com/sms2web/1.js

            Gruß
            Reiner

            1. Hallo,

              Ist ein hochtrabender Name, eigentlich ist es nur ein Array, das man direkt per JS einlesen kann.

              Das stimmt so nun wirklich nicht. JSON heißt ausgeschrieben JavaScript Object Notation. Man notiert also allgemein erst einmal Objekte auf diese Weise. Arrays sind nur eine unterart von Objekten.

              Jeena

          2. Hallo,

            Ist die Notation in JSON besser (performanter) als beispielsweise folgende Notation?

            JSON sind erstmal Strings, Numbers und Booleans untergebracht in Arrays und Objects, die mit einer Kurzschreibweise notiert werden. Dann kann man natürlich noch weitere Objekte darin erzeugen z.B. mit eigenen Konstruktoren. Insofern ist die Frage unpassend, weil man dann höchstens eine Kurzschreibweise notieren kann, aber im Programm dasselbe passiert, also auch kein nennenswerter Performancegewinn beim Ausführen zu verzeichnen ist.

            results = new Array(

            new Result(0, 'url0'),
            new Result(1, 'url1'),
            new Result(2, 'url2')
            );

              
            Einen solchen Array mit eigenen Objekten kann man nicht signifikant kürzer schreiben. Wobei man die Rohdaten in einem Array speichern könnte: ['url0', 'url1', ... ], um den Rest daraus zu generieren.  
              
            Mathias
            
            -- 
            [SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)
            
            1. Hallo molily,

              Einen solchen Array mit eigenen Objekten kann man nicht signifikant kürzer schreiben. Wobei man die Rohdaten in einem Array speichern könnte: ['url0', 'url1', ... ], um den Rest daraus zu generieren.

              Okay. Immerhin habe ich doch eine Verwendung dafür - beispielsweise übergebe ich in mehreren Dateien Arrays an Konstruktoren, da ist diese Kurzschreibweise doch sehr elegant. :-)

              Grüße

              Marc Reichelt || http://www.marcreichelt.de/

              --
              panic("Oh boy, that early out of memory?");
                      linux-2.2.16/arch/mips/mm/init.c
              Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)