【发布时间】:2010-03-08 08:05:18
【问题描述】:
我在玩 http://www.w3.org/TR/offline-webapps/ 上的不完整示例
但是看到里面的 cmets 我很心疼:
"renders the note somewhere", and
"report error", and
"// …"
那么,有人可以帮我写一个有效的例子吗?到目前为止,这是我所得到的:
<!DOCTYPE HTML>
<html manifest="cache-manifest">
<head>
<script>
var db = openDatabase("notes", "", "The Example Notes App!", 1048576);
function renderNote(row) {
// renders the note somewhere
}
function reportError(source, message) {
// report error
}
function renderNotes() {
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Notes(title TEXT, body TEXT)',
[]);
tx.executeSql(‘SELECT * FROM Notes’, [], function(tx, rs) {
for(var i = 0; i < rs.rows.length; i++) {
renderNote(rs.rows[i]);
}
});
});
}
function insertNote(title, text) {
db.transaction(function(tx) {
tx.executeSql('INSERT INTO Notes VALUES(?, ?)', [ title, text ],
function(tx, rs) {
// …
},
function(tx, error) {
reportError('sql', error.message);
});
});
}
</script>
<style>
label {
display:block;
}
</style>
</head>
<body>
<form>
<label for="mytitle">Title:</label>
<input name="mytitle">
<label for="mytext">Text:</label>
<textarea name="mytext"></textarea>
<!-- There is no submit button because I want to save the info on every keystroke -->
</form>
</body>
</html>
我也知道我必须将它合并到某个地方:
if (navigator.onLine) {
// Send data using XMLHttpRequest
} else {
// Queue data locally to send later
}
但我什至不确定我也会把它系起来。
【问题讨论】:
-
我建议不要在每次击键时保存到数据库。在用户暂停输入后,使用 setTimeout 触发保存 n 秒。否则网络延迟将使打字成为一场噩梦。我自己,我会将保存到每个输入的 onblur 处理程序中。
-
感谢 Robusto 的评论。
标签: javascript html