Offline fähiges HTML und JSON

Teilprojekt HTML basierter Viewer für JSON Daten. Also im wesentlichen eine Single Page Application ohne Webserver auf der lokalen Festplatte. Was mit Silverlight (OOB) ein klacks, wird mit JavaScript zur gewohnten Odyssee.

Aus einer anderen Anwendung generierte JSON Daten, die per JavaScript in das DOM des HTML im Browser eingebettet werden müssen.

Ansatz #1 XMLHTTPRequest funktioniert nur solange ein Webserver im Spiel ist. In Kombination mit einem JSON.parse, unterstützen das zwar moderne Browser wie der Internet Explorer 11 oder Chrome 30, aber riegeln aus Sicherheitsgründen den JSON Datei zugriff ab.

Ansatz #2 ist eine Erweiterung des HTML Standards, window.requestFileSystem. Theoretisch nutzbar, furchtbar komplex und dann doch kein Standard?

Ansatz #3 bettet den JSON Code direkt per Script Tag in das HTML Dokument ein und funktioniert.

   1:  <script id="data" type="application/json">
   2:      {
   3:          "id" : "wert"
   4:      }
   5:  </script>
   6:   
   7:  ....
   8:  var json = JSON.parse(document.getElementById('data').innerHTML); 

Blöd nur, das ich den HTML Code des Viewer (also das HTML Dokument) dafür jedes Mal verändern muss.

Ansatz #4: JSONP (Json with padding)

Oft gesehen, nie benutzt, als obsolet betrachtet, ist die Methode, die JSON Daten in einen Funktionsaufruf einzupacken. Das Ergebnis sind dann eigentlich keine Daten, sondern JavaScript Code, so das ich für mich die Dateiendung auf .js ändere.

   1:  data([{
   2:      "id": "cba0c13c-34a0-457f-aed8-8c1be4d30f06",
   3:  ...
   4:  }]);

In der HTML Seite wird dann diese Datei inkludiert und ausgeführt.

   1:  <head>
   2:      <script>
   3:          var json;
   4:          function data(d)
   5:          { json = d; }
   6:      </script>
   7:      <script src="kommentare.js" type="application/javascript"></script>

Dumm nur, das dafür das Datenformat geändert werden muss. Die Newtonsoft JSON.NET Library kann das nach ersten Recherchen nicht. Einige Webservice Frameworks erlauben das automatische einbetten in eine Methode. Die ASP.NET Web Api benötigt dafür einen extra Formatter (sieht nicht ganz aktuell aus). Version 5 (Herbst 2013) unterstützt dies auch native. Nur gelesen, nicht probiert.

Kommentare sind geschlossen