87,910
社区成员
发帖
与我相关
我的任务
分享
<!doctype html>
<html lang="en" manifest="main.manifest">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=yes">
<title>HTML5 Cache</title>
<style>
*{ margin:0; padding:0; border:0; list-style:none; }
body{ padding:10px; background:#ffe; }
p{ line-height:2; }
a{ display:block; line-height:2; color:#f30; }
table{ border-collapse:collapse; border:1px solid #ddd; background:#fff; width:100%; }
th,td{ padding:6px; border:1px solid #ddd; text-align:left; }
th{ color:#00c; background:#eee; }
#data{ display:block; max-width:100%; padding:10px; border:1px solid #ccc; background:#fff; -webkit-box-sizing:border-box; -ms-box-sizing:border-box; box-sizing:border-box; }
button{ border:1px solid #030; background:#060; color:#fff; padding:8px 4px; }
button[id='update'],button[id='swap']{ border-color:#900; background:#f30; }
#buttons{ padding:10px 0; }
</style>
</head>
<body>
<img id="data" src="1.jpg" alt="">
<p>The status is: <strong id="status"></strong></p>
<div id="buttons">
<button id="link1" data-src="1.jpg">link-1</button>
<button id="link2" data-src="2.jpg">link-2</button>
<button id="link3" data-src="3.jpg">link-3</button>
<button id="update">Update</button>
<button id="swap">Swap</button>
</div>
<table id="etable"><tr><th>Event Type</th></tr></table>
</body>
<script>
var buttons=document.querySelector('#buttons');
buttons.onclick=handleButtonPress;
applicationCache.onchecking=handleEvent;
applicationCache.onnoupdate=handleEvent;
applicationCache.ondownloading=handleEvent;
applicationCache.onupdateready=handleEvent;
applicationCache.oncached=handleEvent;
applicationCache.onobselete=handleEvent;
function handleEvent(e){
if(applicationCache.status==applicationCache.UPDATEREADY){
console.log('update start');
applicationCache.swapCache();
console.log('update end');
location.reload();
}
document.querySelector('#etable').innerHTML+='<tr><td>'+ e.type+'</td></tr>';
checkStatus();
}
function checkStatus(){
var statusNames=['UNCACHED','IDLE','CHECKING','DOWNLOADING','UPDATEREADY','OBSOLETE'];
var status=applicationCache.status;
document.querySelector('#status').innerHTML=statusNames[status];
}
function handleButtonPress(e){
if(e.target.tagName=='BUTTON'){
switch(e.target.id){
case 'swap':
applicationCache.swapCache();
break;
case 'update':
applicationCache.update();
break;
default:
document.querySelector('#data').src= e.target.getAttribute('data-src');
}
}
}
</script>
</html>
CACHE MANIFEST
#v-2329
CACHE:
index.html
1.jpg
2.jpg
3.jpg
FALLBACK:
offline3.html