O documento fornece informações sobre como criar aplicações offline em HTML5 utilizando as especificações AppCache, Local Storage e WebSQL Database. Explica como configurar o manifest para armazenar recursos localmente, como referenciá-lo e testar o funcionamento offline. Também descreve as restrições e limitações destas tecnologias e fornece links para recursos adicionais.
17. Web Storage - Modelo interface Storage { length ; key (index); getItem (key); setItem (key, value); removeItem (key); clear (); }; Tempo de vida indeterminado Tempo de vida contexto de janela/tab do browser
28. WebSQL - Suporte dos Browsers 5 MB (> 5 MB pedido ao utilizador) Espaço Disponível (Mac & Win) 5 MB (> 5 MB pedido ao utilizador) (iOS) (Mac, Win & Linux) 5MB (verificado na v12) 10MB (verificado na 2.3.4) (Android) Não suportado (Mac, Win & Linux) (Win) Não suportado
29.
30.
31.
Notas do Editor
As linhas de comentários começam por #. Quando se actualizam ficheiros é necessário criar uma nova versão do manifest. Para o fazer sem alterar a estrutura utiliza-se a linha de comentário: # 2011-07-07:v1 que deverá ser actualizada depois de actualizações aos ficheiros que fazem parte da cache da aplicação.
O Tempo de Vida de um contexto de browser não está bem definido, sendo que existe uma nota sobre sessões a que se possa fazer restart.
QUOTA_EXCEEDED_ERR: Um bloco try/catch à volta do código de armazenamento é suficiente para capturar este cenário e "recuperar" (a definição varia entre aplicações e pode passar por apagar dados desnecessários/antigos)
Caso de uso: [Session Storage] is designed for scenarios where the user is carrying out a single transaction, but could be carrying out multiple transactions in different windows at the same time. Cookies don't really handle this case well. For example, a user could be buying plane tickets in two different windows, using the same site. If the site used cookies to keep track of which ticket the user was buying, then as the user clicked from page to page in both windows, the ticket currently being purchased would "leak" from one window to the other, potentially causing the user to buy two tickets for the same flight without really noticing.
// Adaptado de http://html5demos.com/database-rollback var db = openDatabase( 'foo', '1.0', 'foo', 2 * 1024 ) ; db.transaction( function (tx) { tx.executeSql( 'CREATE TABLE IF NOT EXISTS foo (id unique, text)' ); tx.executeSql( 'INSERT INTO foo (id, text) VALUES (1, "foobar")' ); alert('foo created and row inserted.'); } ); db.transaction( function (tx) { tx.executeSql( 'DROP TABLE foo' ); tx.executeSql( 'INSERT INTO foo (id, text) VALUES (1, "foobar")' ); } , function (err) { alert('should be rolling back caused by: ' + err.message); } ); db.transaction( function (tx) { tx.executeSql( 'SELECT * FROM foo', [], function (tx, results) { alert('found rows (should be 1): ' + results.rows.length); } , function (tx, err) { alert('failed (rollback failed): ' + err.message); } ); } );