昨天,我问了一个满屋子的 Web 开发人员,他们是否知道 iOS 版的 FF/Chrome/Opera/Brave 等浏览器不允许在引擎质量上竞争。
零举手。
— Alex Russell (@slightlylate) 2019 年 9 月 25 日
有必要说明一下。在 iOS 上,唯一的浏览器引擎是 WebKit。虽然有其他浏览器,但它们无法使用自己的引擎(Blink/Gecko)。因此,如果您在 iOS 上使用 Chrome 或 Firefox,实际上它与 Safari 使用的是同一个引擎,只是功能稍微弱一些(例如,没有第三方内容拦截器应用在其中工作)。
作为开发人员,了解这一点很重要。虽然 Chrome 在其桌面浏览器和其他平台上支持诸如 Service Worker 之类的功能,但提供给 iOS 上非 Safari 浏览器的浏览器引擎并不支持它们。您在那里没有它们。Firefox 也一样。
必须说,我对这并非众所周知感到惊讶。我记得,很久以前,当这个话题第一次出现时,这在 Android 与 iOS 之间的争论中是一个经常出现的部分。
不是想做那个家伙,但我以为这是众所周知的。
我也是,我多年来一直大声疾呼。很惊讶欧盟还没有向他们施压。
与客户的经历类似,客户支持人员告诉他们存在“Mac 版 Internet Explorer”,无论哪家公司都严重依赖 ActiveX。
如何告诉一个没有权力的人“但它们是不同的引擎……”。
iOS 版 Safari 确实支持 Service Worker,并且自 iOS 11.4 以来(以更有限的容量)一直支持:https://caniuse.cn/#feat=serviceworkers
抱歉,我认为我误读了。iOS 版 Safari 支持 Service Worker;iOS 上的其他浏览器应用不支持(我认为?)。
是的,我认为这是正确的。iOS 版 Safari 本身支持,但提供给其他浏览器使用的 WebKit 视图不支持。
caniuse.com 在这种情况下有点误导性。它列出了 iOS 版 Safari 中支持的内容,但无法找到其他浏览器使用的受限 WebKit 视图中支持的内容。我还希望它列出 Android 上 Facebook 应用内浏览器的功能。
可能有一些原因……请参阅 https://daringfireball.net/linked/2019/09/25/mr-macintosh-chrome-updater
这怎么就不是反垄断问题呢?
这可能既有好的原因,也有不好的原因。例如,在一个 iOS 设备上测试一次 Safari,您就可以确信它在所有 iOS 设备上的所有浏览应用中都能正常工作。我认为,这有一定的道理。
并不是说我想为苹果的反竞争行为辩护,但其中也有一些优势。
在 Windows 上测试 Chrome 应用,您不知道您的应用是否在任何其他操作系统上都能正常工作…… 并不理想。
此外,如果 Safari 出现问题,您无法要求客户在您修复之前使用其他浏览器。客户完蛋了。您也完蛋了。
Service Worker 并不是在这个过程中唯一会消失的东西。WebKit 支持基于浏览器的 AR/VR,但您必须通过 Safari 运行它,而不是 iOS 上的 Firefox/Chrome。
这使得 A Frame、AR.js 和 8th Wall 等工具无法运行,除非通过 Safari 运行。
这可能是过去十年一直在宣扬 PWA 是未来的那些工程师。