Javascript 如何触发';在安装PrompEvent和x27之前;为推出;“弹出窗口”;添加到主屏幕

Javascript 如何触发';在安装PrompEvent和x27之前;为推出;“弹出窗口”;添加到主屏幕,javascript,reactjs,progressive-web-apps,prompt,Javascript,Reactjs,Progressive Web Apps,Prompt,我目前正在开发一个基于react的应用程序,我正面临PWA主题。我想在需要弹出窗口时触发并显示,该弹出窗口允许您将PWA添加到主屏幕。我最近读到,我可以使用BeforeInstallPromptEvent触发它,但有一些规则需要遵循,如: -该web应用尚未安装 -满足用户参与启发式(目前,用户已与域交互至少30秒) -通过HTTPS提供服务(服务人员需要) -已向获取事件处理程序注册服务工作程序 现在我已经具备了所有这些先决条件,但实际上我无法在InstallPrompEvent之前启动,因此

我目前正在开发一个基于react的应用程序,我正面临PWA主题。我想在需要弹出窗口时触发并显示,该弹出窗口允许您将PWA添加到主屏幕。我最近读到,我可以使用BeforeInstallPromptEvent触发它,但有一些规则需要遵循,如: -该web应用尚未安装 -满足用户参与启发式(目前,用户已与域交互至少30秒) -通过HTTPS提供服务(服务人员需要) -已向获取事件处理程序注册服务工作程序

现在我已经具备了所有这些先决条件,但实际上我无法在InstallPrompEvent之前启动,因此我从未查看过弹出窗口,有人能帮我吗

你可以找到我截取这件事的方式

谢谢你的建议

window.addEventListener('beforeinstallprompt',函数(e){
//防止Chrome 67及更早版本自动显示提示
e、 预防默认值()
//隐藏事件,以便稍后触发。
延迟提示=e
showAddToHomeScreen()
})
函数showAddToHomeScreen(){
var a2hsBtn=document.querySelector(“.ad2hs提示符”);
//@ts忽略
a2hsBtn.style.display=“块”;
//@ts忽略
a2hsBtn.addEventListener(“单击”,添加到主屏幕);
}
函数addToHomeScreen(){var a2hsBtn=document.querySelector(“.ad2hs提示符”);//隐藏显示A2HS按钮的用户界面
//@ts忽略
a2hsBtn.style.display='none';//显示提示
deferredPrompt.prompt();//等待用户响应提示
deferredPrompt.userChoice
//@ts忽略
.then(函数(choiceResult){
如果(choiceResult.Output==‘已接受’){
log('用户接受A2HS提示');
}否则{
log(“用户取消了A2HS提示”);
}
deferredPrompt=null;
});}
您好)您是否检查了活动的平台/浏览器兼容性?

您可以在本页底部找到它:

它只在我的设备(Android)上的Chrome中触发。它在iPhone上不起作用

当浏览器准备好显示默认PWA提示或您可以显示自定义提示时,会触发该事件。 我相信这是兼容性问题

希望对你有帮助