当a域名没有使用pwa,
b域名项目使用了pwa,
把b嵌套在a中:
没有使用pwa的a项目 打开a网站会发现,a网站是没有pwa的安装按钮的。
其实主要在于iframe下能否触发子页面的beforeinstallprompt?
beforeinstallprompt 事件是用于 Progressive Web Apps (PWA) 的一个事件,它会在浏览器准备好显示安装提示时触发。根据 Web 的安全模型,beforeinstallprompt 事件只能在顶级上下文中被触发,即在主页面中,而不能在 iframe 中触发。
因此,子组件(在 iframe 中的内容)是无法直接触发 beforeinstallprompt 事件的。如果需要在 iframe 中的内容提示用户安装 PWA,建议在主页面中处理这个事件,并根据需要与 iframe 中的内容进行通信,例如使用 postMessage API 进行跨域通信。
总结来说,iframe 不能直接触发子组件的 beforeinstallprompt,而需要通过父页面的处理来实现与用户交互的功能。
beforeinstallprompt 事件是为了支持 Progressive Web Apps (PWA) 的安装而设计的,它在浏览器决定可以显示安装提示时触发。由于安全和用户体验的原因,某些限制被施加在这个事件的触发和响应上。
iframe 可能加载来自不同源的内容,这可能会引发安全问题。允许 iframe 中的页面触发 beforeinstallprompt 事件可能会导致恶意页面诱导用户安装不安全的应用。因此,浏览器限制了该事件的触发权限,只在顶级上下文中允许。beforeinstallprompt 事件的触发,仅允许顶级页面处理,确保用户在明确的上下文中接收到安装提示。这样可以避免在嵌入的 iframe 中出现意外的安装提示,从而提升用户体验。beforeinstallprompt)时,通常采取了一致的策略,确保用户的行为不会被嵌套内容(如 iframe)意外干扰。基于安全性和用户体验的考虑,beforeinstallprompt 事件只能在顶级上下文中触发,而无法通过 iframe 直接触发。如果需要在 iframe 中进行相应的操作,建议通过父页面进行处理并与 iframe 之间进行通信。