草庐IT

service-worker

全部标签

javascript - CORS XMLHttpRequest 在 IE10-11 web worker 中失败

我正在尝试从网络worker中创建一个跨源XMLHttpRequest。设置如下:原始请求是针对同一域example.com服务器将请求重定向(302)到s3.amazon.comS3已针对CORS进行了正确设置,使用正确的Access-Control-Allow-Originheader进行响应代码如下:varxhr=newXMLHttpRequest();//thiswillredirectto'https://s3.amazon.com/...'xhr.open('GET','https://example.com/document/1234/download');xhr.sen

javascript - 为什么必须在服务 worker 中克隆获取请求?

在Google的一个ServiceWorker示例中,cacheandreturnrequestsself.addEventListener('fetch',function(event){event.respondWith(caches.match(event.request).then(function(response){//Cachehit-returnresponseif(response){returnresponse;}//IMPORTANT:Clonetherequest.Arequestisastreamand//canonlybeconsumedonce.Since

javascript - Web Worker 中的 RequireJS

我正在尝试在WebWorker中使用RequireJS。问题是我在使用它时不断收到以下错误。UncaughtError:importScripts在./lib/underscore.js下划线失败我已经测试了我的配置选项,它们只在导入Underscore时导致这个错误。他们在这里:{baseUrl:'./',paths:{jquery:'lib/jquery',underscore:'lib/underscore'},shim:{underscore:{exports:'_'}}}如有必要,我可以添加更多信息。该项目的源代码位于GitHub上https://github.com/isa

javascript - 用谷歌的sw-precache搭建的service worker真的能做到networkFirst吗?

我运行网站https://www.igluonline.com运行Hugo,我最近在Google的sw-precache之后安装了一个serviceworker.这是配置文件:module.exports={staticFileGlobs:['dist/css/**.css','dist/**/*.html','dist/images/**.*','dist/js/**.js'],skipWaiting:true,stripPrefix:'dist',runtimeCaching:[{urlPattern:/\/*/,handler:'networkFirst'}]};注意事项:虽然有

javascript - PageMod 多次将 worker 附加到同一个 URL

找到干净的解决方案我找到了一个非常干净的解决方案,它确实使整个问题变得毫无意义,而且当我问这个问题时我确信它存在......我太无知了,也去寻找它。在PageMod构造函数中使用attachTo:'top'只会将脚本附加到顶级文档,而不是任何iframe。因此,如果您发现PageMod多次附加到您的附加组件,可能是因为它附加到iframe以及顶级标签文档。添加attachTo:'top'作为传递给PageMod构造函数的对象的属性,您就无需担心iframe。对于下面的问题,解决方案是var_workers=[];varpageMod=require("sdk/page-mod").Pa

javascript - 是否可以修改服务 worker 缓存响应 header ?

我正在尝试标记存储在ServiceWorker缓存中的资源。我认为可以向资源添加自定义header来指示这一点,但是,一旦资源存储在服务worker缓存中,header修改似乎就会被删除。是这样吗?我在cachespec中没有看到任何内容关于修改响应header。这是我尝试过的一个例子://Isuccessfullycachearesource(confirmedinDevTools)caches.open('testCache').then(cache=>{cache.add('kitten.jpg');}).then(()=>{console.log('successfullyca

javascript - 声音在 Chrome 桌面推送通知中的服务 worker 中不起作用

当我收到通知时,我正在尝试在Chrome浏览器的推送通知中播放声音。我已经在我的网站上设置了浏览器推送通知,但它不播放声音。我已经在浏览声音选项,但听不到声音。option={'body':'ThisiststDescription','icon':'icon.png','silent':'false','sound':'bell.mp3'}如果有任何其他方法可以播放通知中的声音,请告诉我。 最佳答案 或者您可以全局声明myAudio对象并在弹出通知之后或之前使用play()函数。myAudio=newAudio("alert_to

javascript - "classic"和 "module"Web Worker 有什么区别?

我正在学习JavaScriptWebWorkerAPI,使用MozillaDeveloperNetwork(MDN)文档作为主要来源。Thedocumentationsuggests新Worker的构造函数接受type参数。根据同一文档,此type参数可以接受classic或module的值。不幸的是,文档没有描述classic和module之间的区别。我什么时候想使用classic与module以及两种“类型”的Worker之间有哪些行为差异? 最佳答案 module类型的用途与type="module"attributedoes

javascript - 等待 ServiceWorker 完成注册后再订阅

我正在使用ServiceWorker来实现用户通知。当用户首次访问该站点并批准通知时,ServiceWorker将注册并订阅:if('serviceWorker'innavigator){console.log('ServiceWorkerissupported');navigator.serviceWorker.register('/js/sw.js').then(function(reg){if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){reg.pushManager.subscribe({userVisible

javascript - Web Workers - 他们创建实际的线程吗?

我一直认为webworkers创建单独的线程,但今天我在w3c网站上看到了规范。以下是关于网络worker的引文:Thisallowsforthread-likeoperationwithmessage-passingasthecoordinationmechanism.问题是-如果它是类线程,而不是实际的线程,那么使用该技术的优势(性能方面)是什么?任何帮助将不胜感激! 最佳答案 是的,网络worker创建实际的线程(或进程,规范对此很灵活)。根据WebWorkers规范,创建工作人员时的第一步是:Createaseparatep