「Firefox 3 Online and Offline Events」修訂間的差異
出自 MozTW Wiki
(→概觀) |
(→例子) |
||
| 行 13: | 行 13: | ||
=== API === | === API === | ||
=== 例子 === | === 例子 === | ||
| + | 這裡有個[https://bugzilla.mozilla.org/attachment.cgi?id=220609 簡單的例子]。 | ||
| + | <pre><!doctype html> | ||
| + | <html> | ||
| + | <head> | ||
| + | <script> | ||
| + | function updateOnlineStatus(msg) { | ||
| + | var status = document.getElementById("status"); | ||
| + | var condition = navigator.onLine ? "ONLINE" : "OFFLINE"; | ||
| + | status.setAttribute("class", condition); | ||
| + | var state = document.getElementById("state"); | ||
| + | state.innerHTML = condition; | ||
| + | var log = document.getElementById("log"); | ||
| + | log.appendChild(document.createTextNode("Event: " + msg + "; status=" + condition + "\n")); | ||
| + | } | ||
| + | function loaded() { | ||
| + | updateOnlineStatus("load"); | ||
| + | document.body.addEventListener("offline", function () { | ||
| + | updateOnlineStatus("offline") | ||
| + | }, false); | ||
| + | document.body.addEventListener("online", function () { | ||
| + | updateOnlineStatus("online") | ||
| + | }, false); | ||
| + | } | ||
| + | </script> | ||
| + | <style>...</style> | ||
| + | </head> | ||
| + | <body onload="loaded()"> | ||
| + | <div id="status"><p id="state"></p></div> | ||
| + | <div id="log"></div> | ||
| + | </body> | ||
| + | </html></pre> | ||
| + | |||
=== 參考資料 === | === 參考資料 === | ||
*[http://developer.mozilla.org/en/docs/Online_and_offline_events Online and Offline Events 原始網頁] | *[http://developer.mozilla.org/en/docs/Online_and_offline_events Online and Offline Events 原始網頁] | ||
於 2008年1月8日 (二) 13:51 的修訂
Firefox 3 依據 WHATWG Web Applications 1.0 Specification 實做了 Offline/Online Events。
概觀
打造可以離線跑的網路應用程式時,我們往往需要讓程式知道目前的網路狀況。實際上,網路應用程式一般的需求可細分如下:
- 使用者連上網路的時候,網路應用程式必須知道—使用者已經連上網路了,以便與伺服器同步(re-synchronize)。
- 使用者離線的時候,網路應用程式必須知道—使用者目前處於離線狀態,以便將使用者對伺服器發出的 requests 排入隊列(queue)。
有了 Online/offline events,要滿足這些需求變得很簡單。
此外,你的網路應用程式有時可能必須將某些 HTML 文件列入快取中,以便使用者離線時可以存取,如有這個需求,你可以在 HTML 文件的 <HEAD> 加入 <link> 元素:
<link rel="offline-resource" href="myresource">
Firefox 3 看到這些語法時,就會將這些資源列入一個特殊的離線資源快取(offline resource cache)中,讓使用者在離線時,依舊可以被存取這些資源。
API
例子
這裡有個簡單的例子。
<!doctype html>
<html>
<head>
<script>
function updateOnlineStatus(msg) {
var status = document.getElementById("status");
var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
status.setAttribute("class", condition);
var state = document.getElementById("state");
state.innerHTML = condition;
var log = document.getElementById("log");
log.appendChild(document.createTextNode("Event: " + msg + "; status=" + condition + "\n"));
}
function loaded() {
updateOnlineStatus("load");
document.body.addEventListener("offline", function () {
updateOnlineStatus("offline")
}, false);
document.body.addEventListener("online", function () {
updateOnlineStatus("online")
}, false);
}
</script>
<style>...</style>
</head>
<body onload="loaded()">
<div id="status"><p id="state"></p></div>
<div id="log"></div>
</body>
</html>
