HTML5, CSS und JavaScript als strategische
Client-Plattform
Thomas Bayer
15, Dezember 2011
www.predic8.de
bayer@predic8.de
Thomas Bayer
15, Dezember 2011
www.predic8.de
bayer@predic8.de
localStorage.setItem(document.querySelector("input.ls-name").value, document.querySelector("input.ls-wert").value);
var db = openDatabase('crm', '1.0', 'crm', 2 * 1024); db.transaction( function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS person (id unique, name, vorname, email)'); tx.executeSql('INSERT INTO person (id, name, vorname, email) VALUES (1, "Bayer", "Thomas", "thomas.bayer@oio.de")'); tx.executeSql('INSERT INTO person (id, name, vorname, email) VALUES (2, "Mustermann", "Max", "max@mustermann.de")'); tx.executeSql('INSERT INTO person (id, name, vorname, email) VALUES (3, "Mueller", "Petra", "petra@p-mueller.de")'); tx.executeSql('INSERT INTO person (id, name, vorname, email) VALUES (4, "Maier", "Tina", "tina@t-maier.de")'); } );
function lesen_db() { var db = openDatabase('crm', '1.0', 'crm', 2 * 1024); db.transaction(function (tx) { tx.executeSql('SELECT * FROM person', [], function (tx, results) { var msg = ""; for (i = 0; i < results.rows.length; i++){ msg += "" + results.rows.item(i).name + " "; ... } document.querySelector('#result').innerHTML += msg; }, null); }); }
Name Vorname Offline Applications
<html manifest="app.manifest">CACHE MANIFEST index.htm apple-touch-icon.png back_button.png iphone.css jquery.js tippen.jsOffline Applications
Drag and Drop Example
Drag and Drop
image.ondrop = function (e) { var filereader = new FileReader(); filereader.onload = function (event) { image.style.background = 'url(' + event.target.result + ')'; }; filereader.readAsDataURL(e.dataTransfer.files[0]); return false; };W3C FileReader API
- Sicherheitseinstellungen!
- Unterstützung
document.getElementById('file').onchange = function() { var reader = new FileReader(); reader.onload = function(event) { document.getElementById('content').textContent = event.target.result; }; reader.onerror = function(e) { alert(e); }; reader.readAsText(this.files[0]); }File API
- W3C Working Draft 20.Oktober 2011
- Repräsentation von Dateien in Web Anwendungen
- Schnittstellen: FileList, Blob, File, FileReader
W3C File Writer API
- Support ist noch dürftig
- W3C Working Draft 19.April 2011
- API für das Schreiben von Dateien aus lokalen Web Anwendungen.
var bb = new BlobBuilder(); bb.append("OIO HK 2011"); var saver = window.saveAs(bb.getBlob(), "agenda.txt");Messaging und Worker Beispiel
Im Hauptdokument einen neuen Worker anlegen und starten:
worker[i] = new Worker('worker.js'); worker[i].addEventListener('message', function(e) { document.getElementById('output').innerHTML += e.data; }, false); worker[i].postMessage({'say': 'Worker ' + (i+1) + ': Hello'});worker.js:
self.addEventListener('message', function(e) { for (var i = 0; i < 1000; i++) { // do some work var s = 0; for (var j = 0; j < 2000000; j++) s += j; // say hello self.postMessage(e.data.say + '\n'); } }, false);Messaging and Worker Example
Web Workers
- Javascript läuft im Browser in einem einzigen Thread
- Worker erschließen durch einen isolierten neuen Thread mehr Rechnerresourcen. CPU-intensive Algorithmen müssen so sich so nicht mehr selbst ständig unterbrechen (yield), um die Benutzeroberfläche nicht zu blockieren.
- Können nur mittels Messaging oder Netzwerk kommunizieren und neue Worker erzeugen.
Web Sockets
- Bi-Directional
- Full Duplex
- Beispiele: http://websocket.org/
Referenzen
- HTML 5 Demos and Examples
www.html5demos.com- HTML5 Rocks - A resource for open web HTML5 developers
www.html5rocks.com- HTML5 Showcase for Web Developers: The Wow and the How
www.htmlfivewow.com- WC3 Working Draft
www.w3.org/TR/html5- HTML5 Rocks - A resource for open web HTML5 developers
www.html5rocks.com/en/Thank you!