技术周刊 2020-04-15:四大浏览器齐发版Chrome / Edge 81 发布
- Web XR 支持碰撞检测接口:Chrome 和 Edge 81 版本中,Web XR 增加了对碰撞检测接口 Hit Test API 的支持,这有助于开发者在 Web 应用中实现更丰富的虚拟现实和增强现实交互。
- PWA 支持徽标接口:Progressive Web Apps (PWA) 现在支持 Badge API,允许 PWA 在用户设备上显示应用图标徽章,用于显示通知或状态信息。
- Web NFC 进入初始试用计划:Web NFC 功能现已进入初始试用计划,允许开发者通过 Web 应用与 NFC 设备进行交互。
- 开发者工具改进:在开发者工具中,被禁止的 Cookie 将高亮展现,帮助开发者更容易地识别和解握笑决 Cookie 相关的问题。
Firefox 75 发布
- img 标签支持原生懒加载:Firefox 75 版本中,img 标签增加了对原生懒加载属性 loading 的支持,有助于提升页面加载性能。但 iframe 的懒加载还未支持。
- style 标签 type 属性限制:style 标签的 type 属性现在仅能设置为 text/css,此前 Firefox 支持将 style 设置为任意 CSS MIME 类型。
- CSS 函数支持:CSS 中的 min()、max() 和 clamp() 函数已被 Firefox 支持,这些函数有助于实现更灵活的响应式设计。
- ECMAScript Stage 3 语法支持:Firefox 75 原生支持了 ECMAScript Stage 3 的 Public Static Class Field 语法。
- requestSubmit 接口:新支持的 requestSubmit 接口允许在 JavaScript 层面模拟 submit 按钮的点击,并触发原生的校验行为。
- 动画和时间线 API 支持:默认打开了 Animation.timeline、Document.timeline、Document.getAnimations 和 Element.getAnimations 的支持。
- 开发者工具新增测量工具:Firefox 的开发者工具中新增了测量工具,方便开发者进行页面布局和性能测量。
Safari 13.1 发布
- 新 Web API 支持:Safari 13.1 增加了对动画 API Web Animation、异步剪贴板 API Async Clipboard、大小变更监测 API ResizeObserver、标准的画中画 API Picture-in-Picture、远程播放 API Remote Playback 和字幕 API TextTrackCue 的支持。
- ECMAScript Stage 3 语法支持:Safari 13.1 支持了 ECMAScript Stage 3 的 String.prototype.replaceAll 和 Nullish Coalescing 语法 ??。
- CSS 支持增强:支持了 Shadow DOM 子模块规范 Shadow Parts,其中 :part() 替代了之前权段歼限过大的 >>>;同时支持了 dynamic-range @media 查询。
- ITP 升级:智能跨站侦测预防机制 ITP 升级,将 block 全部第三方 Cookie,JavaScript 可写的存储最多保留一周,受影响的存储格式包括 Indexed DB、LocalStorage、Media keys、SessionStorage 和 Service Worker registration。
ECMAScript 2020 候选案确定
- ECMAScript 2020 的候选案已于 4 月 2 日全部定下,包括 String.prototype.matchAll、import()、import.meta、BigInt、Promise.allSettled、globalThis、确定性的 for .. in 执段燃含行顺序、Optional chaining ?.、Nullish coalescing ??、export * as ns from "mod" 等语法。如果 ECMA GA 于 6 月通过上述候选案,对应语法将进入 ECMAScript 2020。
近期安全问题汇总
- 不安全的 TLS 版本下线计划:Chrome 将 TLS 1.0 & TLS 1.1 的下线计划由原定的 81 版本推迟到了 83 版本;Edge Legacy 和 IE 11 将于 9 月下线;Edge 暂定于 84 版本下线;Firefox 已于 74 版本下线;Safari 已于 13.1 版本下线。
- crypto-js secureRandom 不安全:crypto-js 的 secureRandom 随机算法不安全,crypto-js 3.2.1 修复了此问题。原算法采用了 3 信息熵的方式生成 4 位随机数,将造成随机数分布不均匀。
- XSS 风险:jQuery.htmlPrefilter 处理自关闭标签时存在 XSS 漏洞,3.5.0+ 修复了此问题;svelte 的 spread 操作符有 XSS 风险,2.9.8+ 修复了此问题。
- node-sass 安全漏洞:node-sass 存在越界读取、拒绝服务、空指针间接引用问题,最新版 4.13.1 仍有 4 个高危、11 个中危漏洞存在。
百宝箱
- 雷神之锤III竞技场 Web 端运行:1999 年的 3A 游戏雷神之锤III竞技场近期经由 Emscripten 被搬运到了 Web 端,展示了 Web 技术在游戏领域的潜力。
- prerenderjs:prerenderjs 是一个利用 prerender 技术预加载用户访问的下一个页面,为下一个页面的实际加载时间提速的库。
- franc:franc 是一个 JavaScript 实现的自然语言处理库,用于检测文本语言。
点评:四大浏览器的更新各有特色,除了 ECMAScript 以外,似乎没有太多重合的地方,这体现了浏览器厂商在推动 Web 技术发展方面的多样性和创新性。同时,安全问题仍然是开发者需要关注的重要方面,及时更新和修复安全漏洞是保障 Web 应用安全的关键。