You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 17调用history.replaceState致用户媒体视频黑屏,是否为Safari Bug?

iOS 17 Safari中调用history.replaceState导致媒体视频黑屏的问题分析

问题描述

在iPhone上进行视频流传输时,执行代码window.history.replaceState(null, "", browserUrl);更新浏览器URL,该操作在iOS 17的Mobile Safari中会导致摄像头视频变为黑屏,但iOS 16及更早版本无此问题。

复现步骤

  • 在Mobile Safari中打开对应演示页面
  • 点击“share screen”按钮启动相机视频流
  • 视频正常显示后,点击“replace url”按钮
  • 视频随即变为黑屏

判断结论

这是Safari在iOS 17中的Bug,而非预期行为。理由如下:

  1. 该行为仅在iOS 17版本出现,iOS 16及之前版本无此问题,违背了API跨版本功能一致性的预期
  2. history.replaceState的设计目标是修改浏览器历史记录条目而不触发页面刷新,理论上不应干扰正在运行的媒体流
  3. 媒体流播放与URL状态变更属于浏览器中独立的功能模块,两者之间不存在合理的关联逻辑会导致视频黑屏

临时处理建议:

  • 若业务场景允许,可延迟调用replaceState至媒体流稳定运行一段时间后
  • 或者在调用replaceState后,重新触发媒体流的渲染逻辑(例如重新设置video元素的srcObject)

内容的提问来源于stack exchange,提问作者Ivan Banha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:11:10