当我打开WAVE(Web可访问性评估工具)扩展程序时,我的服务人员在Chrome中抛出此错误:Uncaught(inpromise)TypeError:Requestscheme'chrome-extension'isunsupportedatsw.js:52(anonymous)@sw.js:52Promise.then(async)(anonymous)@sw.js:50Promise.then(async)(anonymous)@sw.js:45Promise.then(async)(anonymous)@sw.js:38我的服务worker代码是:(function(){'us
我正在处理一个需要在发生错误时进行报告的网络worker。通常,我可以使用worker.onerror来监听从worker抛出的任何错误。但是,当错误发生在webworker的promise中时,我无法弄清楚如何将错误冒泡回worker.onerror。请原谅奇怪的代码片段,因为这似乎是展示工作人员行为的唯一方法。(worker在HTML部分中定义)。functiongetInlineJS(){varjs=document.querySelector('[type="javascript/worker"]').textContent;varblob=newBlob([js],{"typ
当我在Chrome中刷新(或离线)时,我得到“无法访问此站点”并且以下内容记录到控制台:TheFetchEventfor"http://localhost:8111/survey/174/deployment/193/answer/offline/attendee/240/”导致网络错误响应:重定向响应用于重定向模式不是“跟随”的请求。。当我在Firefox中刷新时,一切正常。有人可以解释为什么会这样吗?这是我简化的软件。importScripts("/static/js/libs/idb.js")varCACHE_NAME="upshot-cache-version3"varurls
我已经使用以下代码在我的页面中添加了一个服务worker。一旦页面被重新加载并且worker已经安装,它就可以很好地工作。但是在我看到'SWINSTALL'日志后,在重新加载页面之前似乎没有捕捉到任何获取事件。app.jsnavigator.serviceWorker.register('/worker.js').then((registration)=>{console.log('ServiceWorkerregistrationsuccessfulwithscope:',registration.scope);},(err)=>{console.log('ServiceWorker
我有一些像这样的javascript代码,varworker=newWorker("javascript/worker.js");worker.onmessage=function(evt){//stuff}worker.js看起来像这样,importScripts("base.js");functiongetImage(){$.ajax({url:'URL'dataType:"text/plain;charset=x-user-defined",mimeType:"text/plain;charset=x-user-defined",success:function(data,tex
我有一个webworker,它不断计算大量数据,当完成一轮时,它是一个js对象,然后我将其解析为ArrayBuffer,然后将其发送到主线程。不能做太多的计算,ArrayBuffer的传输很快。但是这个对象的解析却减慢了这个过程。由于对象本身包含更多对象的数组。在Firefox中我收到以下警告:Ascriptonthispagemaybebusy,oritmayhavestoppedresponding.Youcanstopthescriptnow,openthescriptinthedebugger,orletthescriptcontinue.Script:http://local
我似乎无法在任何地方找到明确的答案。我有一个非常简单的POC,可以以同步和异步方式计算相同的函数。worker.jsonmessage=function(e){vars=newDate().getTime();i=0;varavg=Math.random();while(i索引.htmlvarmw=newWorker("worker.js");mw.onmessage=function(e){console.log('Workersays:'+e.data);};functionav(j){vars=newDate().getTime();i=0;varavg=Math.random(
我有一个简单的serviceworker,它将两个资源(index.html、app.js)添加到缓存(安装时),删除旧缓存(激活时),如果存在则从缓存中提供资源,否则从网络(获取时)。为了注册新的serviceworker并删除旧的缓存,我在CACHE_NAME中增加了新资源的每个版本的版本号:varCACHE_NAME='test-cache-v4';varurlsToCache=['./','./app.js'];self.addEventListener('install',function(event){event.waitUntil(caches.open(CACHE_NA
我正在尝试实现Firebase云消息传递(FCM),以便将通知推送到我的Web应用程序(AngularJS)中。为此,我在根应用程序文件夹中创建了一个firebase-messaging-sw.js。//firebase-messaging-sw.js'usestrict';console.log('Startingserviceworker');if('function'===typeofimportScripts){importScripts('https://www.gstatic.com/firebasejs/3.5.0/firebase-app.js');importScri
我希望我的ServiceWorker在某些情况下表现得像浏览器缓存一样。这意味着当响应缓存命中时,我首先需要确保资源没有过期。例如,我可以这样做:constcacheControl=response.headers.get('cache-control');constdate=newDate(response.headers.get('date'));constage=parseInt(response.headers.get('age')||'0',10);constmaxAge=getMaxAge(cacheControl);constexpiration=date.getTime