iPhone 14(iOS 16)主屏幕Web应用新窗口返回缺失问题咨询
iOS 16 Web App中target="_blank"链接无关闭按钮的解决方案
问题复现场景
- 在Safari中打开网站,添加至主屏幕
- 从主屏幕打开该Web App
- 点击页面内设置了
target="_blank"的链接,打开新窗口
在iPhone 13及更早机型的旧iOS版本中,新窗口顶部会显示带Done按钮的面板,用户可点击关闭返回主Web App页面;但在iPhone 14(iOS 16)中,该关闭面板缺失,用户无法返回主页面。
解决方案:配置Web App Manifest
你需要在Web App的manifest.json中调整以下配置:
- 确保
display属性设置为"standalone"或"minimal-ui":
{ "display": "standalone" }
standalone模式会让Web App以独立应用的形式运行,iOS 16会为这类应用的新弹出窗口保留关闭面板。如果之前设置的是"fullscreen",可能会导致关闭按钮消失。
- 避免使用
display_override属性覆盖默认窗口行为:
如果manifest中存在"display_override": ["window-controls-overlay"]这类配置,需要移除,它会改变窗口控件的显示逻辑,导致Done按钮无法正常显示。
额外补充
如果上述manifest配置后问题仍存在,可通过JavaScript拦截target="_blank"的链接行为,改为在当前窗口打开或自定义弹出窗口的关闭逻辑:
document.addEventListener('click', function(e) { const link = e.target.closest('a'); if (link && link.target === '_blank') { e.preventDefault(); // 可选择在当前窗口打开链接 window.location.href = link.href; // 或自定义弹出窗口并添加关闭按钮(需同源) const newWindow = window.open(link.href); } });
内容的提问来源于stack exchange,提问作者Alexander Popov
相关产品推荐
相关产品推荐

