{
  "collectedAt": "2026-10-20T07:12:14.053Z",
  "href": "https://openpwa.net/demo/",
  "title": "Does it work on mine? — OpenPWA Demo",
  "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1",
  "platform": "iPhone",
  "vendor": "Apple Computer, Inc.",
  "language": "zh-CN",
  "languages": [
    "zh-CN"
  ],
  "maxTouchPoints": 5,
  "hardwareConcurrency": 4,
  "deviceMemory": "undefined",
  "navigator.standalone": false,
  "displayModes": {
    "browser": true,
    "minimal-ui": false,
    "standalone": false,
    "fullscreen": false,
    "window-controls-overlay": false,
    "picture-in-picture": false,
    "application": false
  },
  "features": {
    "'serviceWorker' in navigator": true,
    "serviceWorker.controller": true,
    "serviceWorkerRegistrations": [
      {
        "scope": "https://openpwa.net/demo/",
        "active": true,
        "state": "activated"
      }
    ],
    "'PushManager' in window": false,
    "'pushManager' in window": true,
    "typeof window.pushManager?.subscribe": "function",
    "typeof window.pushManager?.permissionState": "function",
    "typeof window.pushManager?.getSubscription": "function",
    "PushManager.supportedContentEncodings": "n/a",
    "'Notification' in window": false,
    "Notification.permission": "n/a",
    "typeof Notification.requestPermission": "undefined",
    "'setAppBadge' in navigator": false,
    "'clearAppBadge' in navigator": false,
    "'install' in navigator": false,
    "typeof navigator.install": "undefined",
    "'BeforeInstallPromptEvent' in window": false,
    "'onbeforeinstallprompt' in window": false,
    "'onappinstalled' in window": false,
    "'getInstalledRelatedApps' in navigator": false,
    "'share' in navigator": true,
    "'canShare' in navigator": true,
    "canShare({url})": true,
    "canShare({files:[txt]})": true,
    "'launchQueue' in window": false,
    "'showOpenFilePicker' in window": false,
    "'showSaveFilePicker' in window": false,
    "'showDirectoryPicker' in window": false,
    "typeof navigator.storage?.getDirectory (OPFS)": "function",
    "'storage' in navigator": true,
    "storage.estimate()": {
      "quota": 41231686042,
      "usage": 86499
    },
    "storage.persisted()": false,
    "typeof navigator.storage?.persist": "function",
    "'cookieStore' in window": true,
    "'CookieStore' in window": true,
    "'BroadcastChannel' in window": true,
    "'wakeLock' in navigator": true,
    "'contacts' in navigator": false,
    "'getBattery' in navigator": false,
    "'vibrate' in navigator": false,
    "'bluetooth' in navigator": false,
    "'usb' in navigator": false,
    "'serial' in navigator": false,
    "'hid' in navigator": false,
    "'NDEFReader' in window": false,
    "'PaymentRequest' in window": true,
    "'PublicKeyCredential' in window": true,
    "'IdentityCredential' in window": false,
    "'DigitalCredential' in window": false,
    "'credentials' in navigator": true,
    "'clipboard' in navigator": true,
    "'mediaSession' in navigator": true,
    "'periodicSync' in ServiceWorkerRegistration.prototype": false,
    "'sync' in ServiceWorkerRegistration.prototype": false,
    "'navigationPreload' in ServiceWorkerRegistration.prototype": true,
    "'windowControlsOverlay' in navigator": false,
    "'documentPictureInPicture' in window": false,
    "'ViewTransition' in window": true,
    "'startViewTransition' in document": true,
    "'navigation' in window": false,
    "'scheduler' in window": false,
    "'userActivation' in navigator": true,
    "'virtualKeyboard' in navigator": false,
    "'screen.orientation.lock'": "undefined",
    "'requestFullscreen' in documentElement": false,
    "'webkitRequestFullscreen' in documentElement": false,
    "'xr' in navigator": false
  },
  "css": {
    "env(safe-area-inset-top)": true,
    "env(titlebar-area-height)": true,
    "env(viewport-segment-width 0 0)": false,
    "height: 100dvh": true,
    "@supports selector(:has(a))": true,
    "color: oklch()": true,
    "safeAreaInsetsComputed": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    }
  },
  "viewportSegments": {
    "window.viewport": "undefined",
    "window.viewport?.segments": "n/a",
    "(horizontal-viewport-segments: 1)": false,
    "(horizontal-viewport-segments: 2)": false,
    "(vertical-viewport-segments: 1)": false,
    "(vertical-viewport-segments: 2)": false,
    "getWindowSegments": "undefined"
  },
  "screen": {
    "width": 402,
    "height": 874,
    "availWidth": 402,
    "availHeight": 874,
    "colorDepth": 24,
    "orientation": "portrait-primary",
    "angle": 0
  },
  "devicePixelRatio": 3,
  "innerWidth": 402,
  "innerHeight": 678,
  "outerWidth": 402,
  "outerHeight": 874,
  "documentElementClient": {
    "w": 402,
    "h": 678
  },
  "visualViewport": {
    "width": 402,
    "height": 678,
    "scale": 1,
    "offsetTop": 0,
    "offsetLeft": 0,
    "pageTop": 0
  },
  "mediaQueries": {
    "(prefers-color-scheme: dark)": false,
    "(prefers-reduced-motion: reduce)": false,
    "(prefers-contrast: more)": false,
    "(dynamic-range: high)": true,
    "(color-gamut: p3)": true,
    "(hover: hover)": false,
    "(pointer: coarse)": true,
    "(orientation: portrait)": true
  },
  "declarations": {
    "manifest": "/demo/manifest.webmanifest",
    "appleTouchIcon": [
      "/demo/icons/icon-192.png"
    ],
    "icons": [
      "/demo/icons/icon.svg"
    ],
    "themeColor": "#161616",
    "appleCapable": "yes",
    "appleStatusBarStyle": null,
    "appleTitle": "OpenPWA",
    "viewportMeta": "width=device-width, initial-scale=1"
  },
  "pageText": "OpenPWA Demo\nopenpwa.net\nEnglish\n我这台能用吗？\n\n一个小型可安装 Web 应用，在本站同源下演示五项 PWA 能力。每个页面先做特性检测，说明调用成功需要满足的前提，展示实际运行的函数源码，并打印结果。不会向任何地方发送数据；没有统计脚本，也没有第三方请求。\n\n这是 openpwa.net 参考条目的配套演示。下面每项能力都链接到解释该 API 的条目，条目也会链接回这里。\n\n安装此演示\n徽标、iOS 上的推送以及文件处理只有在安装后才表现得像应用。请先安装，再从已安装窗口打开能力页面。\n\n可安装性状态\n满足\n安全上下文（HTTPS 或 localhost）\n满足\n本页已链接 manifest\n/demo/manifest.webmanifest\n满足\n已为 /demo/ 注册 service worker\nscope: https://openpwa.net/demo/\n部分\n以已安装应用方式运行\ndisplay-mode: browser\n部分\n浏览器已提供安装提示（beforeinstallprompt）\n尚未触发。Chromium 会在 manifest 与 service worker 检查通过后触发；Safari 与 Firefox 从不触发。\n安装\nNo result yet. Press the run button.\niOS 或 Safari 上没有安装按钮？改用\"添加到主屏幕\"\n在 Safari 中打开本页（iOS 上其他浏览器无法把 Web 应用添加到主屏幕）。\n点按工具栏中的\"分享\"按钮。\n选择\"添加到主屏幕\"并确认。菜单文字随系统语言变化。\n从新的主屏幕图标启动演示，页面随后以独立窗口模式运行。\n能力页面\n每个页面既可直接访问，也可通过本页的锚点到达，例如 /demo/#share。\n\n安装\n可安装性状态、捕获 beforeinstallprompt、getInstalledRelatedApps、display-mode 检测。\n\n参考条目\n分享\n用 navigator.share 分享文本与 URL；当 canShare 允许时也可分享文件。\n\n参考条目\n徽标\n用计数器驱动 navigator.setAppBadge 与 clearAppBadge。\n\n参考条目\n推送权限\nNotification.requestPermission 与使用演示 VAPID 公钥的 PushManager.subscribe；只显示订阅信息，不会发送。\n\n参考条目\n文件处理\nshowOpenFilePicker 以及 manifest 中声明的 .txt / .md 处理器对应的 launchQueue；只读取文件名和大小。\n\n参考条目\nopenpwa.net 的一部分。纯静态文件，无构建步骤，无依赖。 manifest.webmanifest · sw.js",
  "localStorageDump": {
    "starlight-theme": "",
    "openpwa-demo-lang": "zh"
  },
  "documentCookieNames": [],
  "labJsonTextarea": null,
  "labNotifyOut": null,
  "labEventsOut": null,
  "labProbeOut": null,
  "variantProbe": null
}
