我有一个serviceworker脚本,它在多个站点级别重复注册。换句话说,同一个服务人员注册了www.site.ca/、www.site.ca/text-text、www.site.ca/example-example等。该站点基于php构建,根据内容生成不同的url,类似于API。serviceworker注册在这些页面上的原因是因为大多数站点流量都落在这些页面上而不是主页上。结果是同一个serviceworker在不同的页面上注册了不同的id。有没有人有办法防止在多个子级别上多次注册同一脚本?编辑:ServiceWorker的目的是设置通知,即使用户不在网站上也是如此。此外,我遇
这个问题在这里已经有了答案:AnystandardmechanismfordetectingifaJavaScriptisexecutingasaWebWorker?(5个答案)关闭8年前。我目前正在用JavaScript编写一个小库,以帮助我将一些繁重的计算委托(delegate)给网络worker。出于某些原因(主要是为了能够在UI线程中进行调试,然后在worker中运行相同的代码)我想检测脚本当前是在worker中运行还是在UI线程中运行。我不是经验丰富的JavaScript开发人员,我想确保以下函数能够可靠地检测我是否在worker中:functiontestenv(){try
我有一个WebWorker.我希望用它进行定期网络请求。我特别想要的一件事是即使主JS执行线程被阻塞(例如被window.alert)也发出这些请求。我使用的是Chrome38。但是,当我尝试在worker中发出网络请求时,这些请求似乎被UI线程阻止了。这是一个人为的例子来说明这个问题:基础.js:varworker=newWorker("/worker.js");setTimeout(function(){console.log("beginblocking");varstartDt=newDate();varblockPeriod=5000;vara;//Obviouslywe'd
我知道您可以从ServiceWorker本身内部创建WebSocket连接;我的问题更多的是,您是否可以像往常一样从您的应用程序使用WebSocket,并让ServiceWorker拦截/缓存WebSocket请求,就像它对普通HTTP获取请求所做的那样?这是一个拦截和缓存来自ServiceWorker的普通HTTP请求的示例。self.addEventListener('fetch',function(event){//Ifamatchisn'tfoundinthecache,theresponse//willlooklikeaconnectionerrorevent.respond
与标题差不多。更奇怪的是,这只会在您在新选项卡中运行程序时发生,如果您只是刷新页面,每个console.log只会有一条消息。这是main.js:constworker=newWorker('worker.js');这是worker.js:console.log('Foobar!');这是index.html:WebWorkersFirefox不会发生同样的情况。我使用的是Chrome版本65,更奇怪的是,重复的消息似乎不属于“上下文”下拉列表中列出的任何上下文,因此当我尝试过滤除worker.js发送的消息之外的所有控制台消息时,列出的唯一消息是第一条消息,第二条消息(副本)似乎不属
我在我的网站上安装了一个serviceworker,一切正常,除了我推送更新到缓存文件时,事实上;他们永远被捕获,我似乎无法使缓存无效,除非我取消订阅`chrome://serviceworker-internals/constSTATIC_CACHE_NAME='static-cache-v1';constAPP_CACHE_NAME='app-cache-#VERSION';constCACHE_APP=['/','/app/app.js']constCACHE_STATIC=['https://fonts.googleapis.com/css?family=Roboto:400,
离线时,我的服务人员收到以下错误:(unknown)#3016Anunknownerroroccurredwhenfetchingthescript我的服务人员看起来像这样:varversion='v1'this.addEventListener('install',function(event){event.waitUntil(caches.open(version).then(cache=>{returncache.addAll(['https://fonts.googleapis.com/icon?family=Material+Icons','https://fonts.goo
有没有什么方法可以在web-worker中同步等待或检查新消息?我有大量复杂的代码(从emscripten编译的LLVM),我无法围绕回调进行重构。我需要确保某一行之后的代码在我收到并处理来自UI线程的消息之前不会执行。如果我用while循环阻塞,事件循环永远不会运行,所以我无法接收消息。 最佳答案 这是我在使用Pyodide时也遇到的问题.我想从主线程“同步”调用一个函数。一个解决方案涉及Atomic和SharedArrayBufferAPI。从webworker的Angular来看,这看起来像下面这样postMessage主线程
我想知道您对此有何看法。是否推荐在webworker中使用同步请求(XMLHttpRequest)?我能发现什么问题?我一直在我的应用程序中对此进行测试,但没有发现任何问题。但我害怕这种同步行为,因为以前使用jQuery和AJAX的经验。我的应用程序从数据库中的多个表中获取大量数据,这需要时间。对于从表中检索到的每一组数据,我需要立即对其进行处理,以免拖延整个过程。同时,用户正在与浏览器交互,所以它可以被阻止,我认为webworkers可以正常工作。您认为这是一个好的解决方案吗?或者我应该尝试使用异步请求吗?谢谢。 最佳答案 我没有
我有两个子域:https://abc.xxxx.com和https://xyz.xxxx.com.所以我的问题:1).isitpossibletoregisteraserviceworkerforhttps://xyz.xxxx.comfromhttps://abc.xxxx.com?ifyesthenhow?2).ifhttp://abc.xxxx.com(httpinsecure)thenanywaytoregisteraserviceworkerforhttps://xyz.xxxx.comfromhttp://abc.xxxx.comlikeiniframeorsomethin