Javascript 如何防止添加到主屏幕pwa在网站的www版本上再次提示?

Javascript 如何防止添加到主屏幕pwa在网站的www版本上再次提示?,javascript,json,service-worker,progressive-web-apps,manifest.json,Javascript,Json,Service Worker,Progressive Web Apps,Manifest.json,我可以在我的网站example.com上获得“添加到主屏幕”弹出窗口,但当我使用www.example.com打开我的网站时,我再次获得弹出窗口,单击“添加”,它会在主屏幕中再次添加wpa 我如何防止这种情况发生,因为在同一个网站上有两个wpa图标是无用的?最简单的选择是将www呼叫重定向到非www呼叫。因此,用户实际上从未停留在不同的子域中 如果由于某种原因您无法做到这一点,那么在安装PWA时,您可以保存一个跨子域cookie,只需设置一个“标志”就可以让用户安装PWA。然后,在您的代码中,您

我可以在我的网站example.com上获得“添加到主屏幕”弹出窗口,但当我使用www.example.com打开我的网站时,我再次获得弹出窗口,单击“添加”,它会在主屏幕中再次添加wpa


我如何防止这种情况发生,因为在同一个网站上有两个wpa图标是无用的?

最简单的选择是将www呼叫重定向到非www呼叫。因此,用户实际上从未停留在不同的子域中


如果由于某种原因您无法做到这一点,那么在安装PWA时,您可以保存一个跨子域cookie,只需设置一个“标志”就可以让用户安装PWA。然后,在您的代码中,您将收听
beforestinstallprompt
事件,如果cookie存在,则不提示安装。

最简单的选择是将www调用重定向到非www调用。因此,用户实际上从未停留在不同的子域中


如果由于某种原因您无法做到这一点,那么在安装PWA时,您可以保存一个跨子域cookie,只需设置一个“标志”就可以让用户安装PWA。然后,在您的代码中,您会收听
beforestinstallprompt
事件,如果cookie存在,则不会提示安装。

您可以添加一些JavaScript代码,以便在用户访问
www
站点时删除以下标记

例如:

if (window.location.host.startsWith('www.') {
    const manifestLink = document.querySelector("link[rel='manifest']")
    manifestLink.parentNode.removeChild(manifestLink)
}

当用户访问
www
站点时,您可以添加一些JavaScript代码来删除以下标记

例如:

if (window.location.host.startsWith('www.') {
    const manifestLink = document.querySelector("link[rel='manifest']")
    manifestLink.parentNode.removeChild(manifestLink)
}

如果我错了,请纠正我,但这将使www子域根本不建议安装pwa?没错。那么,我想最好的选择是遵循@erndob的建议如果我错了,请纠正我,但这将使www子域根本不建议安装pwa?没错。那么我想最好的选择就是遵循@erndob的建议