我正在尝试将 Service Worker 与 PreloadJS 一起使用。我已经缓存了所需的图像,然后使用该caches.match()
函数加载它们。
当我尝试使用 jquery 加载图像时,它工作正常,但是在使用 preloadJS 加载时,它会出现以下错误
“someurl”的 FetchEvent 导致网络错误响应:“不透明”响应用于类型不是 no-cors 的请求
虽然如果我加载任何其他未缓存的图像,PreloadJS 会正确加载该图像。仅当我使用caches.match
.
这可能是什么原因?
使用 preloadjs 加载图像
var preload = new createjs.LoadQueue({ crossOrigin: "Anonymous" });
function loadImageUsingPreload() {
preload.on('complete', completed);
preload.loadFile({ id: 'someid', src: 'someurl', crossOrigin: true })
};
function completed() {
var image = preload.getResult("shd");
document.body.append(image);
};
使用 jquery 加载图像
function loadImageUsingJquery() {
jQuery("#image").attr('src', 'someurl');
};
Service Worker 获取事件
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
if (!response) {
console.log('fetching...' + event.request.url);
return fetch(event.request);
};
console.log("response", response);
return response;
}));
});
我使用 PreloadJS 或 jQuery 加载时的响应对象:
响应 {type: "opaque", url: "", redirected: false, status: 0, ok: false, ...}