在 angular.js 应用程序中注册服务工作者
Register service worker in angular.js application
我正在使用 ionic 和 angular.js 创建一个应用程序,但我在注册一个服务工作者时遇到了困难,我打算用它来添加新的应用程序安装横幅功能。我正在按照说明在我的 app.js 文件中添加以下代码,但我注意到没有收到任何注册信号或任何错误。
这是我添加到 app.js:
的代码
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js').then(function(registration) {
//Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
//registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
}
如果您没有看到任何记录,那么最可能的原因是您 运行 在不支持服务工作者的浏览器中。换句话说,if ('serviceWorker' in navigator)
检查失败。您可以通过在与 if
.
关联的 else
子句中添加日志语句来确认这一点
您正在使用哪个浏览器进行测试? Service Workers 将来会在更多浏览器中使用,但截至目前,它们仅在桌面和 Android 平台的 Chrome 当前版本中默认启用。
确保您在 localhost
加载页面,或者您必须使用 https
You’ll also need to serve your code via HTTPS — Service Workers are restricted to running across HTTPS for security reasons. GitHub is therefore a good place to host experiments, as it supports HTTPS.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker_API/Using_Service_Workers
检查您的浏览器是否支持此功能。
if ('serviceWorker' in navigator) {
[...]
} else {
console.log("this browser does NOT support service worker");
}
这可能有帮助:http://caniuse.com/#feat=serviceworkers
如果您想查看 serviceworker 的当前状态,您可以这样做:
navigator.serviceWorker.register('/serviceworker.js', {scope: '/'})
.then(function (registration) {
var serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
} else if (registration.waiting) {
serviceWorker = registration.waiting;
} else if (registration.active) {
serviceWorker = registration.active;
}
if (serviceWorker) {
console.log("ServiceWorker phase:", serviceWorker.state);
serviceWorker.addEventListener('statechange', function (e) {
console.log("ServiceWorker phase:", e.target.state);
});
}
}).catch(function (err) {
console.log('ServiceWorker registration failed: ', err);
});
我正在使用 ionic 和 angular.js 创建一个应用程序,但我在注册一个服务工作者时遇到了困难,我打算用它来添加新的应用程序安装横幅功能。我正在按照说明在我的 app.js 文件中添加以下代码,但我注意到没有收到任何注册信号或任何错误。
这是我添加到 app.js:
的代码if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js').then(function(registration) {
//Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
//registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
}
如果您没有看到任何记录,那么最可能的原因是您 运行 在不支持服务工作者的浏览器中。换句话说,if ('serviceWorker' in navigator)
检查失败。您可以通过在与 if
.
else
子句中添加日志语句来确认这一点
您正在使用哪个浏览器进行测试? Service Workers 将来会在更多浏览器中使用,但截至目前,它们仅在桌面和 Android 平台的 Chrome 当前版本中默认启用。
确保您在 localhost
加载页面,或者您必须使用 https
You’ll also need to serve your code via HTTPS — Service Workers are restricted to running across HTTPS for security reasons. GitHub is therefore a good place to host experiments, as it supports HTTPS.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker_API/Using_Service_Workers
检查您的浏览器是否支持此功能。
if ('serviceWorker' in navigator) {
[...]
} else {
console.log("this browser does NOT support service worker");
}
这可能有帮助:http://caniuse.com/#feat=serviceworkers
如果您想查看 serviceworker 的当前状态,您可以这样做:
navigator.serviceWorker.register('/serviceworker.js', {scope: '/'})
.then(function (registration) {
var serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
} else if (registration.waiting) {
serviceWorker = registration.waiting;
} else if (registration.active) {
serviceWorker = registration.active;
}
if (serviceWorker) {
console.log("ServiceWorker phase:", serviceWorker.state);
serviceWorker.addEventListener('statechange', function (e) {
console.log("ServiceWorker phase:", e.target.state);
});
}
}).catch(function (err) {
console.log('ServiceWorker registration failed: ', err);
});