-
Notifications
You must be signed in to change notification settings - Fork 0
WMAppCacheProxy
Legokichi Duckscallion edited this page Aug 10, 2014
·
3 revisions
AppCacheProxy.js は https://github.com/legokichi/AppCacheProxy.js で公開されている JavaScript ライブラリです。 Browser, Worker 環境で動作し、Closure Compiler で Minify した状態でも動作します。
AppCacheProxy.js を組み込むと、 global.WMAppCacheProxy が追加されます。
Application CacheされているメインページからblobURIで生成したiframeやworkerを使うと、オリジンの違いのためiframe内からはキャッシュされているソースにアクセスできない問題があります。この問題はオフライン時に顕著になります。
AppCacheProxy は、blobオリジンのiframeやworker内からメインページのオリジンでキャッシュされているソースを使うために、メインページのオリジンで使いたいソースをarraybufferでダウロードしてからblobURLにしてオリジンをそろえ、同じblobオリジンのiframeで使えるようにするためのBlobURIを生成するライブラリです。
## AppCacheProxy 名前空間です。 ## AppCacheProxy.createProxyURL AppCacheProxy.createProxyURL(url:URLString, mimetype:MimeTypeString, callback:Function(err:Error|null, url:BlobURLString):void):void は、URLのソースをBlobURL変換します。function AppCacheProxy_createProxyURL(url, // @arg URLString
mimeType, // @arg mimeTypeString
callback) { // @arg Function - callback(err:Error|null, url:BlobURLString):void
// @ret void
//{@dev
$args(AppCacheProxy_createProxyURL, arguments);
//}@dev
_getArrayBuffer(url, function(err, buffer){
var blobURL = URL.createObjectURL(new Blob([buffer], {type: mimeType}));
callback(err, blobURL);
});
}function AppCacheProxy_createProxyURLs(hashes, // @arg HashArray - [{url:String, mimeType:String}]
callback) { // @arg Function - callback(err:Error|null, url:BlobURLString):void
// @ret void
//{@dev
$args(AppCacheProxy_createProxyURLs, arguments);
//}@dev
var task = new Task(hashes.length, function(err, blobUrls){
callback(err, blobUrls);
});
hashes.forEach(function(hash, i){
var url = hash.url, mimeType = hash.mimeType;
AppCacheProxy_createProxyURL(url, mimeType, function(err, blobUrl){
task["set"](i, blobUrl);
task["done"](err);
});
});
}