我首先要与服务人员一起使网站离线。我想提示用户在更新内容可用时刷新页面。我希望用户知道他们正在查看过时的竞争,因此他们可以通过刷新页面来获取最新内容。
这些实现是一个很好的例子:
我正在使用PWABuilder提供的缓存优先服务工作程序。它运作良好,但不会提示用户可用的更新。
我试图复制以上文章中的代码,但无法正常工作。
Here is the repo of the service worker I currently use.
我要添加到服务工作者脚本中的代码:
addEventListener('message', messageEvent => {
if (messageEvent.data === 'skipWaiting') return skipWaiting();
});
我要添加到网页的脚本:
/ reload once when the new Service Worker starts activating
var refreshing;
navigator.serviceWorker.addEventListener('controllerchange',
function() {
if (refreshing) return;
refreshing = true;
window.location.reload();
}
);
function promptUserToRefresh(reg) {
// this is just an example
// don't use window.confirm in real life; it's terrible
if (window.confirm("New version available! OK to refresh?")) {
reg.waiting.postMessage('skipWaiting');
}
}
listenForWaitingServiceWorker(reg, promptUserToRefresh);
如果我仅将此代码分别添加到服务人员和网页,则服务人员可以正常运行。但是更新提示不起作用。
我在控制台中收到此错误:
Uncaught ReferenceError: reg is not defined
at (index):231
答案 0 :(得分:0)
好吧,您的问题不一定与Service Workers有关:)如果仔细查看错误消息(在控制台中显示),您会发现它清楚地告诉了您一个变量未定义reg。换句话说,在代码的某个地方,您试图引用名称为“ reg”的变量,但那里不存在“ reg”。
似乎您的问题中粘贴的代码不是全部,但我怀疑问题出在这里:
data$entry_2 <- ifelse(is.na(data$age_2) & !is.na(data$age_1), NA, data$age_2)
data$entry_3 <- ifelse(is.na(data$age_3) & !is.na(data$age_1) & !is.na(data$age_2), NA, data$age_3)```
Output:
summary(data$entry_2)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
12.00 58.00 69.00 64.64 72.00 102.00 9076
summary(data$age_2)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
12.00 58.00 69.00 64.64 72.00 102.00 9076
无论如何,错误消息会告诉您问题出现在html文件的第231行,因此请检查一下。