sw

sw.js

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/473118/1235563/sw.js

  1. // ==UserScript==
  2. // @name 测试js
  3. // @namespace
  4. // @include *
  5. // @version 0.0.1
  6. // @description 测试专用js
  7. // @author ymzhao
  8. // ==/UserScript==
  9. (function () {
  10. // this
  11. this.addEventListener('install', function (event) {
  12. console.log('Service Worker install');
  13. });
  14. self.addEventListener('install', event => {
  15. // 安装中
  16. event.waitUntil(
  17. // 可以预缓存重要的和长期的资源
  18. );
  19. });
  20. self.addEventListener('activate', event => {
  21. // 已激活,成功控制客户端
  22. // 如果activate足够快,clients.claim的调用在请求之前,就能保证第一次请求页面也能拦截请求
  23. clients.claim();
  24. event.waitUntil(
  25. // 可以在这里清除旧的缓存
  26. );
  27. });
  28. self.addEventListener('fetch', event => {
  29. const url = new URL(event.request.url);
  30. // 拦截/api/user接口的请求,返回自定义的response
  31. if (url.pathname == '/api/user') {
  32. event.respondWith(
  33. // response body只能接受String, FormData, Blob等类型,所以这里序列化
  34. new Response(JSON.stringify({ name: 'Javen' }), {
  35. headers: {
  36. 'Content-Type': 'application/json',
  37. },
  38. })
  39. );
  40. }
  41. });
  42. })