Debugging iOS Safari


作为网页开发人员,浏览器的兼容性适配必不可少,无论你如何拉伸和压缩浏览器窗口来模仿移动设备的比例,直到你在真正的设备上测试过,你才算真正测试过你的项目。对于那些没有轻松获得所有相关设备的人来说,这是一个挑战。
当涉及到测试和调试iOS Safari时,项目的可调试性就比较差了。问题进一步复杂化的是:iOS Safari有时会表现出与MacOS(桌面版)Safari非常不同的特性。

简单的选择:MacOS Safari 用户代理仿真

MacOS 上的 Safari 提供了一组非常有用的功能来进行测试和调试:用户代理仿真和响应式设计模式。这两种功能结合起来,使得 MacOS Safari 能够以非常高的准确度复制 iPhone 的环境。虽然不是完美的,它可能会缺少一些功能,但如果你已经有一台 Mac 的话,这是一个快速简便的方法。

第一步

打开 MacOS 上的 Safari 并转到 Safari › Preferences。在“高级”选项卡下,确保“在菜单栏中显示开发者菜单”选项已被勾选。(这是访问 Safari 开发者工具所必需的,此访问默认是关闭的。)

第二步

Safari 中,打开 Develop › User Agent,并选择你想要模拟的设备,选择最新的可用 iPhone 也可以。

第三步

Develop 菜单中再次选择“进入响应式设计模式”(位于“用户代理”选项的下方几个选项)。
你会看到一个菜单,其中列出了几款 iOS 设备可供选择。点击其中一个,浏览器视口会自动调整以匹配所选设备的屏幕大小。

你还可以旋转屏幕,切换竖屏和横屏模式,甚至在分屏场景中模拟应用程序的大小(例如 iPad 屏幕的三分之一)。
内置在桌面Safari中的功能非常好用。然而,这种方法也有其局限性。它不会显示浏览器的外壳(即浏览器栏和导航),也不会显示其他·iPhone 用户界面的元素,你看不到设备的形状或边缘——这些因素可能会对用户体验产生重要影响。此外,正如前文所述,MacOS SafariiOS Safari之间的行为并不总是完全一致。

全面的选择:Xcode 设备模拟器

这个选项可能看起来非常复杂,但实际上并不难,它为你提供了一种在 Mac 上免费且无限使用iPhone的方法。

然而,缺点在于这种方法需要你投入大量的时间和磁盘空间。你需要几个GB的可用磁盘空间,用于安装Xcode和它的模拟器,并且需要花费时间下载这些内容,因此在开始之前请确保你有足够的资源。
下载并安装了 Xcode,打开它。忽略它打招呼时出现的任何提示和警告,然后打开 Xcode › Preferences

Xcode的偏好设置中,选择“Components”选项卡,你会看到一列可用的模拟器。选择你想要的iOS 版本,然后点击下载图标。

一旦你选择的模拟器下载并安装完成,你就准备好了!

在打开的 Xcode 中,前往 Xcode › Open Developer Tool › Simulator。你应该会在屏幕上看到一个 iPhone,运行你选择的 iOS 版本。这里提供了完整的 iPhone 用户界面;你的模拟设备可以启动和关闭,有内存和应用程序,有刘海。对于我们的测试目的最重要的是:当你打开Safari时,它展示了完整的浏览器界面,让我们看到我们的网站或应用程序在用户手中的真实表现。

这个设备的行为就像一个真实的 iOS 设备;你可以安装应用程序,旋转屏幕,显示和隐藏键盘,并使用所有设备的常规功能。

真机调试

苹果在 macOS 和 iOS 之间的集成提供了一个原生且高效的路径,使开发者可以直接从 macOS 计算机上调试iOS设备上的网页内容。
在开始远程调试之前:

  • 在你的 Mac 上通过 Safari 设置 > 高级设置启用开发者模式。

  • 在你的iOS设备上,转到 设置 > Safari

  • 找到高级选项,然后在那里启用 Web 检查器。

    现在可以开始远程调试了:

  • 使用数据线将你的iOS设备连接到Mac上。

  • iOS设备上的 Safari 浏览器中打开需要调试的目标 URL

  • macOS系统上,在 Safari Develop 菜单中,找到你的iOS设备名称,然后点击你在手机或平板上已经打开的页面。

    在打开的Web Inspector中,您可以调试Web页面。