Safari Technology Preview 46 发布说明

Safari Technology Preview Release 46 现已开放下载,适用于 macOS Sierra 和 macOS High Sierra。如果您已安装 Safari Technology Preview,可以从 Mac App Store 的“更新”标签页进行更新。此版本涵盖 WebKit 修订版本 225266-225841

Service Worker

离线应用对网络非常重要。在 HTML5 首次尝试通过离线应用缓存 (Offline Application Cache) 来适应它们之后,Service Worker 规范应运而生,作为其后续。

该标准描述了新的 API,重点在于使用 JavaScript 处理网页资源加载,即使没有网络访问。随着工作的推进,我们很高兴在此版本中默认启用 Service Worker。请使用您的网站测试我们的实现,并通过WebKit 项目错误跟踪器向我们发送反馈。

  • 默认启用 Service Worker (r225789)
  • 在 Service Worker 内部公开 self.registration (r225296)
  • 移除了 Service Worker fetch 中 CachedResource 和 CachedResourceLoader 添加的 HTTP 请求头 (r225574)
  • 调用分离帧中的对象时,拒绝 Service Worker API 中的 Promise (r225577)
  • CacheStorage.add(url) 网络请求中生成图像内容 (r225708)
  • 将 Fetch 事件请求头过滤更改为仅在 CORS 模式下应用 (r225809)
  • 在 Service Worker 内部处理 self.skipWaiting() (r225460)
  • 移除了向 Service Worker 暴露 XMLHttpRequest (r225549)
  • 实现了 clients.get()clients.getAll() (r225427, r225452)
  • 在 Service Worker 内部支持 container.register()registration.unregister() (r225456)
  • 将 Service Worker 的作用域 URL 作为远程检查元数据目标 (r225633)
  • 使导航请求使用导航 fetch 模式 (r225796)
  • 在 Service Worker 中激活 IndexedDB 和 Web Sockets (r225644)
  • 在 Service Worker 内部支持 container.getRegistration()container.getRegistrations() (r225513)
  • 在 Service Worker 内部添加了对 serviceWorker.postMessage()serviceWorkerRegistration.update() 的支持 (r225462, r225455)
  • 添加了对 Service Worker 客户端卸载算法的支持 (r225483)
  • 添加了对 FetchEvent.clientId 的支持 (r225294)
  • 解决了检查 Service Worker 时遇到的各种问题 (r225709)
  • 包括了对 Service Worker 生成的重定向的支持 (r225297)
  • 在 Service Worker 内部填充 self.registration.installingself.registration.waitingself.registration.active (r225341)

安全 UI

  • 在与非安全页面上的密码或信用卡表单交互时,在“智能搜索”字段中添加了警告

隐私

  • 冻结 user-agent 字符串,以降低网页兼容性风险并防止其用于指纹识别

CSS

  • 修复了由于对 <video> 元素应用 scale() 转换导致的控件过小或被剪裁的问题 (r225495, r225521)
  • 如果 min() 轨道尺寸函数是 auto,则限制 CSS 网格中的自动最小尺寸 (r225776)
  • 为绝对定位的 CSS 网格项实现了对齐 (r225805)

渲染

  • 修复了 HTML 页面中 <object type="image/svg+xml" data="foo.svg"> 经常显示空白的问题 (r225791)
  • 修复了屏幕上元素动画时图层内容缺失的问题 (r225310)
  • 为 WebGL 离屏画布对象实现了 transferToImageBitmap (r225706)
  • 防止 viewport 单位值受使用 ⌘- 或 ⌘+ 缩放的影响 (r225277)

存储访问 API

  • 在网络存储会话层实现了针对帧的访问 (r225827)
  • document.hasStorageAccess 设置为一个函数,并始终允许同源 iframe 访问 (r225583, r225586)

Web 检查器

  • 将“计算属性”设为“元素”标签页中的顶级侧边栏面板 (r225547)
  • 在重新设计的“样式”侧边栏中添加了过滤规则和添加新样式规则的功能 (r225571, r225569)
  • 在“样式”侧边栏中添加了相关伪元素的显示 (r225572)
  • 更改了在“样式”侧边栏中,删除新添加属性的空值字段时将焦点移至名称字段的行为 (r225570)
  • 修复了在“样式”侧边栏中删除值后 CSS 属性未被移除的问题 (r225839)
  • 修复了“计算样式”面板中,详细信息部分标题与“类”容器重叠的问题 (r225595)
  • 修复了在“样式”侧边栏中,在没有尾随分号的属性之后添加新属性的问题 (r225299)
  • 防止在“样式”侧边栏中,在第一个属性之前或之后添加属性时被附加到末尾 (r225568)
  • 修复了“控制台”标签页中的过滤器栏有时不显示以及清除控制台有时不起作用的问题 (r225280)
  • 修复了通过 XHR 和 Fetch 加载的资源的内容视图未能反映声明的 MIME 类型的问题 (r225546)
  • 修复了远程 Web 检查器窗口无法恢复上次使用窗口大小的问题 (r225451)
  • 修复了在“画布”标签页中,对改变像素内容的命令显示虚假警告的问题 (r225602)
  • 改进了“画布”标签页的初始用户界面体验 (r225587, r225487)
  • 修复了在连接的 iOS 设备上切换“允许 Web 检查器”设置后导致 Safari 卡顿的问题。

WebAssembly

  • 修复了 postMessage,允许 WebAssembly 模块向 iframe 发送和接收 postMessage (r225656)
  • 修复了一个错误,该错误导致我们错误地抛出堆栈溢出错误 (r225411)

WebDriver

  • 添加了对处理执行脚本时显示的用户提示的支持 (r225448)
  • 修复了链接和部分链接查询在 XHTML 文档中不起作用的问题 (r225388)
  • 修复了 computeElementLayout,使其能够正确地将 iframe 客户端坐标转换为主帧坐标 (r225367)
  • 修复了一个回归问题,该问题导致页面截图仅包含可视区域 (r225501)
  • 修复了一个问题,即当没有窗口保持打开时,safaridriver 在尝试关闭窗口后会退出

JavaScript

  • 修正了闭包上的递归尾调用优化 (r225270)
  • 实现了 BigInt 字面量和 JSBigInt (r225799)
  • 实现了更优化的 WeakMap 和 WeakSet (r225832)
  • 通过单次转换加速优化了 Object.assign (r225840)

媒体

  • 添加了对图像上 decoding="sync"decoding="async" 属性的支持 (r225616)
  • 对于支持 VCP H264 编码器的平台,启用其使用 (r225761)
  • 修复了退出全屏视频后光标不可见的问题 (r225494)
  • 如果浏览器在图像上下文中支持视频媒体,则在图像请求的 Accept 头部中包含 "video/*" (r225472)

WebRTC

  • 更改为允许在 getUserMedia 开启时启动 AudioContext (r225785)
  • 修复了 getUserMedia 在文档知晓正在捕获之前就解析的问题 (r225828)
  • 播放 WebRTC 视频轨道时,阻止显示屏进入睡眠状态 (r225822)