Safari 17 支持 AVIF 需满足三条件:1. macOS Ventura 13.0+;2. 开发者菜单启用并验证 navigator.canPlayType('image/avif') 返回 "probably" 或 "maybe";3. 网页中
要在 Safari 17 浏览器中确保 AVIF 图片能正常加载、预览、下载和参与网页渲染,不能只依赖“默认开启”这一模糊认知——Safari 17 虽原生支持 AVIF 解码,但部分关键行为受系统级设置、网页标记方式和资源加载路径共同制约,必须逐项验证并手动激活对应能力。
打开「关于本机」→「系统报告」→「软件」,核对 macOS 版本不低于 Ventura 13.0(Safari 17 首发于该系统);若为 macOS Sonoma 14 或 Sequoia 15,则 Safari 自动升级至 Safari 17.x 或更高。旧版 Safari(如 16.x)即使伪装成 17,【也不会启用 AVIF 的完整解码管线】,会导致图片显示为空白或 fallback 到 的备用图。
在 Safari 菜单栏点击「Safari」→「偏好设置」→「高级」,勾选「在菜单栏中显示“开发”菜单」——这是后续调试的必要前提。
方法一:通过开发菜单强制刷新媒体类型检测
打开任意含 AVIF 的网页 → 点击菜单栏「开发」→「清除缓存并重载页面」→ 再次「开发」→「显示网页检查器」→ 切换到「网络」标签页 → 刷新页面 → 在资源列表中筛选 avif,观察状态码是否为 200 且 MIME 类型显示为 image/avif。
方法二:用控制台验证解码器可用性
在网页检查器的「控制台」中粘贴并执行:navigator.canPlayType('image/avif'),返回值必须为 "probably" 或 "maybe"。若返回空字符串,说明系统级 AVIF 解码器被禁用或损坏,需重装系统或修复权限。
第一步:确保 标签中 出现在所有其他 type 之前
浏览器按 顺序匹配,Safari 17 不会跳过已声明但不支持的 type,而是严格按文档流尝试首个匹配项。把 AVIF 放最前,才能避免被 WebP 或 JPEG 拦截。
第二步:AVIF 文件必须携带正确且未被篡改的文件头
Safari 17 对 AVIF 的魔数(magic bytes)校验比 Chrome 更严格:前 12 字节必须为 00 00 00 18 66 74 79 70 61 76 69 66。用 Hex Editor 打开文件确认,若开头是 00 00 00 20 ...(常见于某些 FFmpeg 导出变体),Safari 将静默拒绝解码。
第三步:禁用「限制网站跟踪」对 AVIF 加载的副作用
进入「Safari 偏好设置」→「隐私」→ 取消勾选「阻止跨站跟踪」。该选项在 Safari 17 中会干扰 的多源协商逻辑,导致 type="image/avif" 被跳过,即使控制台显示支持。