点击关注公众号,回复“1024”获取2TB学习资源!

作者|Scott Gilbertson

编译|核子可乐、燕珊

苹果的 Safari 浏览器在支持 Web 功能方面远远落后于其他竞争对手,它或许会成为下一个 IE。

时至今日,IE 6 的种种遗留问题仍然困扰着不少 Web 开发人员。这款虽然经典但却毛病多多的浏览器大大降低了开发者的生活质量,甚至有激进的观点认为它几乎毁掉了整个互联网。总之,IE 真的很差劲,它相当于是逼着 Web 开发者在冰天雪地中爬坡前行……经历过的估计都懂。

但就算没经历过那个时代,如今的 Web API 开发人员也面临着类似的难题——只不过这一次,难题来自苹果。

苹果的 Safari 浏览器在支持 Web 功能方面远远落后于其他竞争对手,这种落后到底达没达到当初 IE 的“高度”仍有争议,但不少人已经把 Safari 视为 IE“精神”留下的现实映射。而且可以肯定的是,Safari 当中的 WebKit 引擎确实远不及其他浏览器方案。根据 Web Platform Tests 公布的仪表板,基于 Chrome 的浏览器能够支持 94% 的测试套件、Firefox 支持 91%,而 Safari 仅支持 71%。在桌面端,问题似乎不大;毕竟用户可以随时切换到最经典的谷歌 Chrome(甚至 Vivaldi)。

但是,在 iOS 设备上,情况就没那么简单了。

iOS 对于浏览器的垄断

根据苹果 App Store 中发布的规定,“用于浏览网页的应用必须使用适当的 WebKit 框架与 WebKit JavaScript。”换句话说,无论选择 Safari 还是 Chrome,iPhone 用户们实际上使用的都是 Safari/WebKit 这对弱智组合。

苹果在 iOS 上垄断了浏览器选择权,这是微软在 IE 身上永远没能实现的终极目标。在 Windows 中,用户至少还可以安装 Firefox。但即使在 iOS 上使用其他浏览器、包括 Firefox,我们用到的在本质上也仍然是 WebKit。或者说,只要大家选择了 iOS 设备,那么 Safari 就将永远伴你左右。

而真正让 Web 开发者们头疼的,则是苹果缓慢的开发周期。苹果最快也要每六个月左右才更新一次 Safari。而基于 Blink 的 Chrome 系浏览器则每六周更新一次(很快将进一步缩短为每四周更新),Firefox 每四周更新一次,Brave 甚至每三周就迎来一波更新。如此一来,苹果不仅是添加新功能的速度太慢,这样的开发周期也让简单的 bug 修复成果得等上好久才能正式登陆用户设备,而某些受到 Safari bug 影响的网站可能需要等待一年才能解决问题。

再深入观察,我们会发现 Web Platform Tests 数据还暴露出 Safari 的另一大短板——即使 WebKit 能够实现某项功能,其效果也往往不够完整。以渐进式 Web 应用程序(PWA)为例,其目标是希望能让 Web 应用的使用体验无限接近于原生移动应用。

用于构建 PWA 的相关 API 可以实现全屏运行(无浏览器 UI)、发送通知与警报、离线状态运行以及通过主屏幕图标启动等等。目前最具知名度的 PWA 案例当数 Twitter 与 Uber。

苹果已经为开发人员实现了构建 PWA 所需要的大部分功能,但其中仍有着不少局限性。比如苹果还没添加对发送通知和主屏幕应用图标的支持,因此本质上可以说 Safari 还没有实现某些真正能让网站用起来像原生应用的核心功能。

也正是因为苹果这种故意削弱 WebKit 来护着自家 App Store 业务的行为,引发了开发领域的激烈争论。因为如果苹果老老实实推出所有支持功能,开发者就能构建起更好的 Web 应用,那到时候没人买原生应用了怎么办……苹果在 iOS App Store 中可是拥有 30% 的佣金抽成。

热衷于做 Web 应用的开发者们对上述问题自然是非常关心的,但苹果则不然——他们是世界上财力最雄厚的企业之一,并不担心自己的倒行逆施行为会惹恼 Web 开发者群体。更重要的是,苹果在保护自身利益的同时,还把新 API 支持功能的缺失解释成保护用户隐私……打着这面大旗,其他人也确实不好多说什么。

Safari 真的在拯救 Web 吗?

Safari 的支持者以及苹果本身都坚定认为,之所以不支持那些新型 API,是为了避免开发者访问用户的 USB 端口、蓝牙装置、电池状态及 NFC 传感器等,进而导致广告商利用这些信息不断侵蚀本已很脆弱的互联网隐私。就算不担心隐私,这些 API 也会减弱手机的电池续航能力。

我本人并不是 iOS 用户,但苹果在隐私问题上的坚定立场确实让我相当心动。

我承认,我非常讨厌现代网络,但我对隐私问题也不太担心,毕竟使用移动设备本身就代表着与隐私的背离。我重视隐私,但如今网站可靠性低、速度慢而且对用户抱有敌意等整体趋势已经让这种重视毫无意义。

我非常不喜欢 JavaScript 驱动的 Web API 所带来的体验,所以已经开始在浏览过程中禁用 JavaScript,这样网络能瞬间恢复最初漂亮、简洁的状态,而苹果肯定特别欣赏我这样的用户。我用过很多无需 JavaScript 即可加载的网站,而且坚决不碰那些强制要求使用 JavaScript 的站点。没错,既然 Invidious(YouTube 的开源前端替代产品)都能在无需 JavaScript 的前提下加载 YouTube 内容,为什么 YouTube 自己不行?我不在乎具体理由,但写了个脚本保证自己总会被重新定向至 Invidious 或者 PeerTube。

我想说的是,在这个问题上我是支持苹果的;但我也承认,苹果这种 Safari 落后性源自保护用户隐私的说法压根站不住脚。虽然我觉得苹果不会非常担心 Web 开发者能损害到 App Store 的根本利益,但其中的种种负面可能性也确实不得不防。于是,苹果出于利益做出了选择,再把它强行解释成是在保护用户隐私。

这些新 API 正在快速入驻其他浏览器,所以在一段时间之后,微软 IE 当初的惨剧估计会重新上演。而大家也都清楚故事的结局:微软输了,其他浏览器都在快速发展,只有微软 IE 彻底无人问津。

如果苹果也沿着这条路走下去,那他们不仅会输、甚至可能拖着整个 Web 一起陷落。因为苹果支持者们有一点是对的:如果苹果愿意接受谷歌 Blink 的主宰,那其他竞争厂商也只能服从。

那这位新“主宰者”的能力究竟如何?Web 开发者 Tim Perry 最近写了一篇名为《Safari 不是在保护 Web, 而是正杀死它》的文章,他表示,过去每种浏览器都会提供自己的扩展 API。但如今,“Chrome 已经深入人心,他们不断提供更强大、更易于使用的扩展 API,人气也一路水涨船高。而 Firefox 与 Safari,它们放弃了自有 API,转而接纳 Chrome 的 API。这相当于允许谷歌凭一己之力塑造 Web 扩展标准。”是的,当没人敢站出来对抗市场领导者时,就会发生这种情况。“如果情况没有大的变动,那么谷歌的主宰之势将愈演愈烈。这绝不是什么好消息。”

写在最后

必须有人站出来阻挡谷歌和 Blink 疯狂的扩张脚步,确保不断涌现的 API 真能给 Web 用户带来助益。这一点对苹果用户很重要,对谷歌用户乃至 Web 开发者也同样重要。

大部分现代 Web 功能的开发是悄然进行的,期间鲜有争论。Blink 开发者会在 Chrome 当中以开发者标记的形式发布这些新功能。这已经成为一种共识和习惯,再要辩论或调整恐怕已经非常困难。

我倒不是说苹果的动机就真有多高尚,但他们对 Safari 的坚持至少还能逼迫谷歌在统一 Web 标准流程的霸业上放缓脚步……但苹果方面也得做出改变,否则 Safari 有可能步 IE 的后尘。

我的这些想法可能太过理想,但正如 Web 倡导者(前 Opera 布道师)Bruce Lawson 所言,“如果苹果允许 Safari 真正参与竞争,对于 Web 开发者、企业、消费者乃至整个 Web 领域的健康状况都将是个好消息。”

如果苹果能够调整功能开发当中的透明度(减少)与加快响应速度,那它一定可以更多地在新 API 的发展中发挥作用。而且如果苹果真的担心 API 影响到用户隐私,就该用行动捍卫自己的观点、反击谷歌、拿出一套有竞争力的 Chrome 替代品。这可能不容易,但却是今后 Web 还能健康发展的唯一希望。

延伸阅读:

https://www.theregister.com/2021/10/22/safari_risks_becoming_the_new_ie/

推荐阅读 点击标题可跳转

适合程序员的 5 款 Linux 发行版

企业级日志平台新秀!比 ELK 更轻量、高效

如果Mysql磁盘满了,会发生什么?还真被我遇到了

为什么DNS根服务器只有13台?给中国一台很难吗?

爱奇艺大裁员,互联网的苦日子来了…

公司用的 MySQL 团队开发规范,太详细了!

自定义注解妙用,一行代码搞定用户操作日志记录

服务器扩容思路及问题分析

IDEA 注释模板这样搞!爽!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。

随手在看、转发是最大的支持!

真的,我现在特讨厌 Safari 浏览器!相关推荐

  1. 为什么现在我特讨厌 Safari 浏览器?

    往期热门文章: 1.图解电商支付架构设计,这才是真电商系统! 2.System.currentTimeMillis的性能,真有如此不堪吗? 3.IntelliJ idea 高效使用教程,一劳永逸! 4 ...

  2. IE 退出后,苹果 Safari 成为了开发者最讨厌的浏览器?

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 以前,如果提到开发者最讨厌的浏览器,那必然非 IE 浏览器莫属:兼容性差.安全漏洞频出.缺乏最新的技术支持,又因为许多企业网站都需要 I ...

  3. 记一次safari浏览器正则表达式兼容问题

    safari浏览器正则表达式兼容问题 发现问题 解决问题 1.正则格式不对 2.IOS,MAC不支持零宽断言 发现问题 在开发过程中难免会使用正则表达式来匹配或替换一些文本(字符串),原本以为在不同的 ...

  4. Safari浏览器自动化测试(Python脚本测试)

    上文我们解释了,其他浏览器驱动没安装时的报错该如何处理(怎么安装驱动) 错误处理详情(火狐与谷歌浏览器) 其实Safari真的挺好用的建议用Safari,简单.无脑.好用 Safari浏览器自动化测试 ...

  5. 复制链接到safari浏览器打开_ios系统通过safari添加到主屏幕后,打开子链接还会跳转到safari...

    我们做好了一个web的应用程序,有时候演示,需要在手机浏览器中操作,每次都需要打开手机浏览器,然后找到地址进行访问,这不算什么,最讨厌的就是还有手机浏览器自带的工具栏等,看着不舒服. ios系统的sa ...

  6. 禁止缩放safari浏览器--阻止双击放大--阻止双指掐捏放大-

    /*禁止缩放safari浏览器*/ var scale = {disabledSafari: function () {/* 阻止双击放大*/var lastTouchEnd = 0;document ...

  7. 如何删除Safari浏览器的扩展程序 大神教你搞定

    对于 Mac 用户来说,在 Safari 浏览器中添加扩展程序是非常有用的,用苹果的话来说就是"让你用自己想要的方式来探索网络".那么问题来了,我们应该如何删除这些扩展程序呢?如果 ...

  8. html5+调用safari,Safari浏览器不酷,HTML5无效元素; JavaScript是

    我使用JavaScript来生成一个图像对象,然后使用jQuery来改变它的属性,包括一个.load函数.在找到Safari(ver 5.0.5)的错误控制台(当最后不难发现时最令人沮丧)之后,我们发 ...

  9. safari浏览器横屏怎么设置_Safari浏览器的几个小技巧你掌握了吗?

    众所周知,Safari浏览器是iPhone中最好用的APP之一,功能十分丰富,而且操作十分便捷,那么Safari浏览器到底怎么使用才能更加快捷方便呢?那接下来就为大家介绍几个 Safari的实用小技巧 ...

最新文章

  1. R语言dplyr包mutate_if函数修改所有满足条件的数据列的内容实战
  2. Jquery通过Ajax方式来提交Form表单
  3. curl 视频vip接口 php,php中CURL的使用方法及详解教程
  4. android-apt-compiler: Cannot run program D:\android-sdk\platform-tools\aapt
  5. 2013\Province_C_C++_A\7.错误票据
  6. 【HDU - 5882】Balanced Game (找规律,思维)
  7. python函数设置默认参数_深入讲解Python函数中参数的使用及默认参数的陷阱
  8. VMware Workstation 12下载安装与激活图文教程
  9. Java丨基础:十三、集合
  10. 打印工资条怎么做到每个人都有表头明细_一键批量生成工资条并群发,操作步骤详解...
  11. adb安装apk程序
  12. 计算机应用研究英文稿,英文文摘要编写要求
  13. 【课程作业】情感分析方向SKEP: Sentiment Knowledge Enhanced Pretraining for Sentiment Analysis阅读报告
  14. 测试语文水平的软件,语文试卷质量分析
  15. 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题
  16. Java Web实现登录注册(超详细附代码)
  17. 计算机考研如何寻找调剂信息?我这有最全的!
  18. 契约锁解读四川、山东新规,推动采购合同电子化
  19. ML基础 - 深度神经网络中解决过拟合的方法
  20. Java VM错误解决方法

热门文章

  1. 语义分割论文:FastFCN:Rethinking Dilated Convolution in the Backbone for Semantic Segmentation(arxiv2019)
  2. aws php 上传文件 限制大小_php如何实现文件上传下载-PHP问题
  3. 谷歌搜索中一些十分有趣的特效现象
  4. SQLMap使用|命令大全(干货)
  5. Vue常用的内置指令的底层细节分析
  6. ae2018怎么打开2019_ae2018中英文切换的方法
  7. FusionCharts报表
  8. 群晖安装和插件库系列笔记
  9. 虚拟地址转换成物理地址
  10. datagridview 单击某个单元格选中一行