原生HTML Popover在Safari/iOS环境下无法正常工作的原因咨询
原生HTML Popover在Safari/iOS环境下无法正常工作的原因咨询
嘿,我来帮你拆解这个问题——我之前在适配Safari的时候也踩过原生Popover的同款坑!
核心原因其实是Safari对原生HTML Popover API的支持起步太晚:直到Safari 17.4版本(2024年3月发布),苹果才正式支持原生Popover API,而且仅支持你用的manual手动模式。如果你的测试设备(不管是Mac上的Safari还是iOS的Safari)系统版本对应的Safari低于17.4,那这套代码完全跑不起来——因为浏览器根本不认识popover属性,也没有showPopover()、hidePopover()这些方法。
你代码里加了popoverRef.current &&的判断,所以不会抛出错误,但这些方法调用其实都是静默失败的,自然点击按钮没任何反应。
给你个快速验证方法:打开Safari的「关于Safari」看看版本号,如果是17.4以下,那百分百是版本支持的问题。如果确实是版本太低,要么升级设备系统到对应版本,要么就得考虑兼容方案了——比如用Popover的polyfill来补全旧版Safari的支持,或者 fallback 到自己实现的弹窗组件。
备注:内容来源于stack exchange,提问作者Jorge
相关产品推荐
相关产品推荐

