直到我嘗試從JSONP端點中包含數據時,我對緩存的脫機應用程序有好運。這裏有一個小例子,它加載由新的Netflix插件API一部電影:如何避免讓JSONP返回緩存在HTML5離線應用程序中?
<!DOCTYPE html>
<html manifest="main.manifest">
<head>
<title>Testing!</title>
</head>
<body>
<p>Attempting to recover a title from Netflix now...</p>
<script type="text/javascript">
function ping(r) { alert('API reply: ' + r.catalog_title.title.regular); }
var cb = new Date().getTime();
var s = document.createElement('SCRIPT');
s.src = 'http://movi.es/7Soq?v=2.0&output=json&expand=widget&callback=ping&cacheBuster=' + cb;
alert('SCRIPT src: ' + s.src);
s.type = 'text/javascript';
document.getElementsByTagName('BODY')[0].appendChild(s);
</script>
</body>
</html>
...這是我的清單,main.manifest
,其中不包含任何文件,並且只有在那裏,所以我的瀏覽器就會知道的內容緩存調用的HTML文件。
CACHE MANIFEST
是的,我已經證實了我的服務器發送清單來與正確的內容類型,text/cache-manifest
。
該應用工作正常 - 這意味着兩個警報顯示 - 我第一次運行它,但後續運行,即使嘗試在第10行高速緩存清除,似乎試圖從緩存中加載腳本no重要的是查詢字符串是什麼。我看到顯示腳本源的警報,但回調從未觸發。
如果我從第2行刪除清單鏈接並重置我的瀏覽器(作爲Safari和iPhone模擬器)以清除緩存,它每次都有效。我也試着提醒頁面中SCRIPT標籤的數量,並且在所有情況下都能看到現有的和動態創建的標籤。