hotti: AppCache Manifest usw.

hi,

mal angenommen, ich habe in der Manifestdatei unter CACHE einen Dateinamen stehen.

CACHE
/data.bin

Erste Frage: Nimmt der Browser diese Datei in den AppCAche auch dann, wenn Diese nicht irgendwo in einem DOM-Element, beispielsweise als src eingebunden ist?

Wenn das der Fall ist, nächste Frage: Wie greife ich auf die in der Datei gespeicherten Daten zu?
Es gibt eine AppCache-API, da bin ich noch nicht ganz durch, bitte mal um Hiweise,

danke und Gruß,
Horst

  1. Nimmt der Browser diese Datei in den AppCAche auch dann, wenn Diese nicht irgendwo in einem DOM-Element, beispielsweise als src eingebunden ist?

    Ja. Der Browser lädt alle Ressourcen im Manifest für Offline-Zugriff herunter.

    Wenn das der Fall ist, nächste Frage: Wie greife ich auf die in der Datei gespeicherten Daten zu?

    Direkt gar nicht. Du referenzierst sie ganz normal, wie sonst auch. Was »normal« ist, hängt vom Dateityp ab. Bei Bildern, Scripts, Stylesheets und Fonts sollte es einleuchten. Andere Daten lassen sich z.B. mit XMLHttpRequest laden.

    Mathias

    1. hi danke Dir,

      Nimmt der Browser diese Datei in den AppCAche auch dann, wenn Diese nicht irgendwo in einem DOM-Element, beispielsweise als src eingebunden ist?

      Ja. Der Browser lädt alle Ressourcen im Manifest für Offline-Zugriff herunter.

      Sehr schön ;)

      Wenn das der Fall ist, nächste Frage: Wie greife ich auf die in der Datei gespeicherten Daten zu?

      Direkt gar nicht. Du referenzierst sie ganz normal,

      Also ab ins DOM sozusagen. Hmm, ich suche nach Möglichkeiten, externe Datenquellen einzubinden, so dass diese auch offline zur Verfügung stehen, ohne dass der Benutzer dazu aktiv werden muss (er könnte z.B. eine Datei in den Browser ziehen oder über input type="file" einbinden).

      Neben localStorage (z.B. betankt per Ajax), oder Daten direkt im HTML (z.B. in einem display:none Element), welche Möglichkeiten gibt es noch?

      Horst und Gruß

      1. Hmm, ich suche nach Möglichkeiten, externe Datenquellen einzubinden, so dass diese auch offline zur Verfügung stehen

        Neben localStorage (z.B. betankt per Ajax), oder Daten direkt im HTML (z.B. in einem display:none Element), welche Möglichkeiten gibt es noch?

        Hunderte? Alles, was sich als Bild, Script, Stylesheet, iframe ... oder mit XMLHttpRequest laden lässt. Formate können image/*, JavaScript, CSS, HTML, JSON, XML, CSV, binär usw. sein.

        Mathias

        1. hi,

          Hunderte? Alles, was sich als Bild, Script, Stylesheet, iframe ... oder mit XMLHttpRequest laden lässt. Formate können image/*, JavaScript, CSS, HTML, JSON, XML, CSV, binär usw. sein.

          Irgendwie drehe ich mich im Kreis... mal angenommen, ich habe sowas:

            
          <p>  
           <object id="data" data="xy.txt" type="text/plain">  
           </object>  
          </p>
          

          wie komme ich dann mit JS auf den Inhalt der Datei (z.B. als Blob)?

          Horst

          1. <p>

            <object id="data" data="xy.txt" type="text/plain">
            </object>
            </p>

            
            >   
            > wie komme ich dann mit JS auf den Inhalt der Datei  
              
            Vermutlich über  
            `document.getElementById('data').contentDocument.textContent`{:.language-javascript}  
              
            
            > (z.B. als Blob)  
              
            Ein Blob kann man daraus [immer noch erzeugen](http://www.nczonline.net/blog/2012/06/05/working-with-files-in-javascript-part-5-blobs/).  
              
            Aber wieso der Umweg über <object>? Warum nicht gleich XMLHttpRequest?  
              
            Grüße,  
            Mathias
            
            1. hi,

              <p>

              <object id="data" data="xy.txt" type="text/plain">
              </object>
              </p>

              
              > >   
              > > wie komme ich dann mit JS auf den Inhalt der Datei  
              >   
              > Vermutlich über  
              > `document.getElementById('data').contentDocument.textContent`{:.language-javascript}  
                
              das gibt leider null  
                
              
              > Ein Blob kann man daraus [immer noch erzeugen](http://www.nczonline.net/blog/2012/06/05/working-with-files-in-javascript-part-5-blobs/).  
                
              Klara, wenn ich den Inhalt der Datei habe...  
                
              
              > Aber wieso der Umweg über <object>? Warum nicht gleich XMLHttpRequest?  
                
              Wie das Tag heißt, ist mir egal. Es muss möglich sein, dem tag eine Datei als Data-Source zuzuweisen und mit JS über irgendwelche(?) Methoden oder Attribute an den Inhalt der Datei zu kommen.  
                
              Geht das überhaupt?  
                
              Viele Grüße.  
                
              PS/XR: Auch möglich, eine DB in den localStorage zu laden. Wenn die Dateilösung nicht zu machen ist, dann das ;)  
                
                
              
              
              1. Hi,

                Aber wieso der Umweg über <object>? Warum nicht gleich XMLHttpRequest?

                Wie das Tag heißt, ist mir egal. Es muss möglich sein, dem tag eine Datei als Data-Source zuzuweisen und mit JS über irgendwelche(?) Methoden oder Attribute an den Inhalt der Datei zu kommen.

                Geht das überhaupt?

                Klar geht das – schau dir im DOM Inspector an, welche Eigenschaften das Elementobjekt hat, da wirst du sicher irgendwo fündig.

                Aber, noch mal:

                Warum nicht gleich XMLHttpRequest?

                MfG ChrisB

                --
                Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
                1. hi,

                  Aber, noch mal:

                  Warum nicht gleich XMLHttpRequest?

                  Ich entwickle (nur Hobby und brotloser Zeitvertreib) Lösungen für Inline-Daten direkt im HTML-Dokument, d.h., eine Datenbank ist direkt im HTML eingebaut, womit sich eine One-File-Stand-Alone-Anwendung ergibt.

                  Der AppCache ist für solche Sachen eigentlich auch keine Lösung, aber ich wollte mir wenistens mal anschauen, was da so anderweitig geht. Immerhin funktionieren meine Inline-Datenbanken mit passablen Dateigrößen auch multimedial, sie können Texte, Video, Grafik, Audio usw. in einer linearen Struktur enthalten, hier ein Beispiel.

                  Funktionieren tut das fehlerfrei mit einigen Tausend Text-Records (Felder sind hier beliebige Attribute je Objekt-Record) bei einer Dateigröße von ca 3MB, mit Hypermedia-Daten wird die Datei entsprechend größer.

                  Viele Grüße,
                  Horst

                  1. hier noch eine Anwendung mit AppCache, an den Styles muss ich noch arbeiten ;)

                    1. hi,

                      hier noch eine Anwendung mit AppCache, an den Styles muss ich noch arbeiten ;)

                      Und so sieht das Teil auf dem Handy aus:
                      Android

                      Die Sytyles sind noch nicht ganz optimal, da gibs noch ne Menge Nacharbeit ;)

                      Dann wäre noch die Sache mit dem Icon... Für mich das Allerwichtigste: Es funktioniert und ich fühle mich berufen, allein dieser kleine Erfolg gibt mir wieder Kraft und ermutigt mich, weitere Ideen umzusetzen.

                      Frage: Warum der IE8 den AppCache ignoriert??

                      Viele Grüße,
                      Horst (Name geändert)

                      --
                      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.