ios 调试方式整理

2,910 阅读3分钟

有一个需求,在 ipad 中 safari 和 chrome 浏览器中表现不一致,于是查了很多 ios 相关的调试方式,做此整理。

chorme 开发者工具中切换设备工具

适用情况:检测是否只是小屏幕导致的样式问题,或者 ua 导致的问题

image.png

mac 中 safari 开发工具中切换设备工具

原理和以上 chorme 开发者工具类似,但是比 chrome 更接近 ios safari

打开途径: 菜单栏~开发~进入响应式设计模式

菜单栏~开发~用户代理。可以改变对应 ua

image.png

mac xcode 模拟器模拟 ios safari 行为

使用 xcode 打开 ios 模拟器,可以使用 mac 本身的 safari 浏览器中的 devtools 来检测 xcode 模拟器的行为。

image.png

在线模拟器

没有详细了解,仅仅提供思路。

safari 真机测试(需要 mac)

1、在 ios 设备中打开:设置~safari浏览器~高级~网络检查(web inspector)

2、用 usb 线将 ios 设备和 mac 连接后,可以在 mac 中的 safari 浏览器中:菜单栏~开发~对应设备找到网页链接,打开后可以通过 safari 浏览器提供的开发者工具进行调试。

safari 真机调试 - chrome 开发者工具 (需要 mac)

以上都是使用 safari 提供的开发者工具进行调试,通过 remotedebug-ios-webkit-adapter 适配器可以将 ios 中 safari 浏览器的页面在 mac 中以 chrome 开发者工具进行调试。

不推荐该方式:一方面该适配器已经停止维护,随着版本更新可能无法使用,另一方面 safari 的开发者工具完全对标 chrome 开发者工具,许多功能完成可以通过上一个方式完成调试。

Inspect -- remotedebug-ios-webkit-adapter 的替代者

在 remotedebug-ios-webkit-adapter 官网看到这个工具的推荐,介绍说可以做到没有 mac 的配合下在真机调试,由于没有具体尝试过,这里不做赘述。

Inspect: inspect.dev/

如何调试 ios 设备中的 chrome

以上方法大多使用 safari 浏览器进行调试,但是并没有找到合适的在 ios 设备中调试 chrome 的方法。最后是通过 charles 抓包的方式调试定位到接口问题。

charles 抓包配置教程:www.jianshu.com/p/5539599c7…

遇到的问题及解决:

  • ios chrome 中接口的 content-type 为 xls 格式(application/vnd.ms-excel),需要升级为 xlsx 格式(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)。该问题在 pc 上表现正常,在 ios 的 chrome 和 safari 上均出现错误。
  • safari 浏览器对 window.open()方法不兼容,并且做了消音处理,不会有阻止提示(pc 上可以在 url 中看到被拦截,但是移动端上无任何提示),不改动代码情况下,可以直接在 ios 设备中设置中关闭对默认阻止弹出窗口行为。

此处注意:由用户自己触发的动作,如 click 的 handler 中的 window.open()可以正常运行,但是在代码中的 window.open()方法会被 safari 浏览器的安全机制阻止

参考文章 (科学上网)