Firefox 68 现已推出,其功能包括对大整数的支持、整页对比度检查以及对 Firefox 核心功能(URL 地址栏)的全新实现。
这些仅仅是亮点。有关完整信息,请参阅
JavaScript 的 BigInt
Firefox 68 现在支持 JavaScript 的新数字类型 BigInt
。
自推出以来,JavaScript 只有一个数字类型:Number
。根据定义,JavaScript 中的数字是浮点数,这意味着它们可以表示整数(如 22
或 451
)和小数(如 6.28
或 <a href="https://0.30000000000000004.com/" rel="nofollow">0.30000000000000004</a>)。但是,这种灵活性是有代价的:64 位浮点数无法可靠地表示大于 2 ** 53
的整数。
» 2 ** 53
9007199254740992
» (2 ** 53) + 1
9007199254740992 // <- Shouldn't that end in 3?
» (2 ** 53) + 2
9007199254740994
此限制使得处理非常大的数字变得困难。例如,这就是Twitter 的 JSON API 将推文 ID 作为字符串而不是文字数字返回的原因。
BigInt 使表示任意大的整数成为可能。
» 2n ** 53n // <-- the "n" means BigInt
9007199254740992n
» (2n ** 53n) + 1n
9007199254740993n // <- It ends in 3!
» (2n ** 53n) + 2n
9007199254740994n
JavaScript 不会在 BigInt 和 Number 之间自动转换,因此您不能在同一个表达式中混合使用它们,也不能将它们序列化为 JSON。
» 1n + 2
TypeError: can't convert BigInt to number
» JSON.stringify(2n)
TypeError: BigInt value can't be serialized in JSON
但是,您可以将 BigInt 值无损地转换为字符串并从字符串转换回来。
» BigInt("994633657141813248")
994633657141813248n
» String(994633657141813248n)
"994633657141813248" // <-- The "n" goes away
Number 并非如此——它们在从字符串解析时可能会丢失精度。
» Number("994633657141813248")
994633657141813200 // <-- Off by 48!
MDN 有更多关于 BigInt 的信息。
DevTools 中的可访问性检查
Firefox 的每个版本都带来了改进的 DevTools,但 Firefox 68 标志着一项全新功能的首次亮相:检查基本的可访问性问题。
使用 Firefox 68,可访问性面板现在可以报告页面上文本的任何颜色对比度问题。将来还计划进行更多检查。
我们还
- 在检查器中包含了一个启用“打印媒体模拟”的按钮,以便轻松查看页面哪些元素在打印时可见。(在维基百科上试一试!)
- 改进了控制台中的 CSS 警告,以显示更多信息并包含指向相关节点的链接。
- 增加了对调整字母间距的支持,可以在字体编辑器中进行操作。
- 在 DevTools 控制台中实现了基于正则表达式的过滤:只需将您的查询括在斜杠中,例如
/(foo|bar)/
。 - 可以通过在网络面板中右键单击它们来阻止特定请求。
Firefox 68 还包含对我们几周前撰写文章中提到的更智能的调试功能的改进。
Web 兼容性
保持 Web 开放是一项艰巨的工作。有时,浏览器在如何解释 Web 标准方面存在分歧。其他时候,浏览器会在未经过标准流程的情况下实现和发布自己的想法。更糟糕的是,一些开发人员故意阻止某些浏览器访问他们的网站,无论这些浏览器是否可以正常工作。
在 Mozilla,我们将这些称为“Web 兼容性”问题,或简称“webcompat”。
Firefox 的每个版本都包含针对 webcompat 问题的修复。例如,Firefox 68 实现了
- Internet Explorer 的<a href="https://mdn.org.cn/en-US/docs/Web/API/CSSStyleSheet/addRule" rel="nofollow">addRule()</a> 和 <a href="https://mdn.org.cn/en-US/docs/Web/API/CSSStyleSheet/removeRule" rel="nofollow">removeRule()</a> CSS 方法。
- Safari 的<a href="https://mdn.org.cn/en-US/docs/Web/CSS/-webkit-line-clamp" rel="nofollow">-webkit-line-clamp</a> CSS 属性。
在后一种情况下,即使标准的 line-clamp
属性正在开发中,我们也必须支持 -webkit-
版本以确保现有网站在 Firefox 中正常工作。
不幸的是,并非所有 webcompat 问题都像实现其他浏览器的非标准 API 那样简单。有些问题只能通过修改 Firefox 在特定网站上的工作方式来解决,甚至告诉 Firefox 假装成其他东西以逃避浏览器嗅探。
我们将这些有针对性的修复作为 Firefox 捆绑的webcompat 系统附加组件的一部分提供。这使得在网站发生变化时更容易更新我们的 webcompat 干预措施,而无需将这些修复直接添加到 Firefox 本身。从 Firefox 68 开始,您可以通过访问 about:compat
并切换相关开关来查看(并禁用)这些干预措施。
我们的首选始终是帮助开发人员确保他们的网站在所有现代浏览器上都能正常工作,但我们只能解决我们已知的问题。如果您遇到 Web 兼容性问题,请在webcompat.com 上报告。
CSS:滚动捕捉和标记样式
Firefox 68 支持CSS 滚动捕捉的最新语法,该语法提供了一种标准化的方法来控制容器内滚动的行为。您可以在 Rachel Andrew 的文章Firefox 68 中更新的 CSS 滚动捕捉中了解更多信息。
如上视频所示,滚动捕捉允许您开始滚动容器,以便在达到某个阈值时,松开手指会整齐地完成滚动到下一个可用的捕捉点。如果您自己尝试一下,会更容易理解这一点,因此下载 Firefox 68并在MDN 滚动捕捉文档中的一些示例上试一试。
如果您想知道这会如何处理现在已经过时且不推荐使用的滚动捕捉点规范,请阅读浏览器兼容性和滚动捕捉。
今天发布的 Firefox 还增加了对<a href="https://mdn.org.cn/en-US/docs/Web/CSS/::marker" rel="nofollow">::marker</a>
伪元素的支持。这使得可以设置出现在列表项和summary元素旁边的项目符号或计数器的样式。
最后但并非最不重要的是,CSS 变换现在适用于间接渲染的 SVG 元素,如 mark
、marker
、pattern
和 clipPath
。
我们正在撰写一篇关于 Firefox 68 中这些以及其他 CSS 更改的完整文章;请在本月晚些时候留意。
浏览器:WebRender 和 QuantumBar 更新
两个月前,Firefox 67 成为第一个默认启用WebRender 的 Firefox 版本,尽管仅限于在 Windows 10 上使用 NVIDIA GPU 的用户。Firefox 68 将此受众扩展到包括在 Windows 10 上使用 AMD GPU 的用户,并将陆续支持更多平台。
我们还在 Firefox 基础的其他领域辛勤工作。URL 地址栏(昵称为“AwesomeBar”)已使用 Web 技术完全重新实现:HTML、CSS 和 JavaScript。这个新的“QuantumBar”应该与之前的 AwesomeBar 没有区别,但其架构使其在将来更容易维护和扩展。通过这次大修,我们朝着最终淘汰我们的旧版 XUL/XBL 工具包迈出了一步。
DOM API
Firefox 68 对现有 DOM API 进行了多项更改,特别是
- 在不安全的上下文中(如普通 HTTP)不再允许访问摄像头、麦克风和其他媒体设备。
- 您现在可以将
noreferrer
选项传递给<a href="https://mdn.org.cn/en-US/docs/Web/API/Window/open" rel="nofollow">window.open()</a> 以避免在在新窗口中打开链接时泄漏推荐者信息。
我们还添加了一些新的 API,包括对 Android 上的视觉视口 API的支持,该 API 返回考虑了屏幕键盘或捏合缩放等因素的视口。这可能会导致可见区域小于整体布局视口。
现在还可以使用<a href="https://mdn.org.cn/en-US/docs/Web/API/HTMLImageElement/decode" rel="nofollow">.decode()</a> 方法在HTMLImageElement上下载和解码元素,然后再将它们添加到 DOM 中。例如,此 API 简化了用更高分辨率的图像替换低分辨率的占位符:它提供了一种方法来知道新图像可以在插入到页面后立即显示。
更多内容
这些亮点只是冰山一角。除了 Firefox 中的这些更改外,上个月我们还发布了Lockwise,这是一种密码管理器,可让您在移动设备上随身携带保存的凭据。我们还在 Android 上发布了全新的Firefox 预览版等等。
感谢您选择Firefox,这是来自您最喜欢的“年度互联网反派”提名者的全体成员的感谢。
关于 Dan Callahan
Mozilla 开发者关系工程师,前 Mozilla Persona 开发人员。
15 条评论