首页 > 其他分享 >关于 beforeinstallprompt 事件

关于 beforeinstallprompt 事件

时间:2023-08-17 19:58:44浏览次数:33  
标签:提示 beforeinstallprompt 用户 应用程序 事件 安装 deferredPrompt 关于

当浏览器检测到网站可以作为渐进式 Web 应用程序安装时,会触发 beforeinstallprompt 事件。

没有保证触发此事件的时间,但它通常发生在页面加载时。

此事件的典型用途是,当 Web 应用程序想要提供自己的应用程序内 UI 邀请用户安装该应用程序时,而不是浏览器提供的通用 UI 时。

这使应用程序能够提供有关应用程序的更多上下文,向用户解释为什么他们可能想要安装它。

在这种情况下,该事件的处理程序将:

  • 保留对传入其中的 BeforeInstallPromptEvent 对象的引用
  • 显示其应用内安装 UI(默认情况下应隐藏,因为并非所有浏览器都支持安装)。

当用户使用应用内安装界面安装应用时,应用内安装界面会调用保留的BeforeInstallPromptEvent对象的prompt()方法来显示安装提示。

例如,开发人员可能不希望在用户首次访问站点时立即显示安装提示。使用 beforeinstallprompt 事件,开发人员可以阻止浏览器的默认安装提示,然后在更合适的时间(例如用户完成了某些交互后)再显示提示。

下面是一个简单的 beforeinstallprompt 示例:

let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
  // 阻止 Chrome 67 及更早版本自动显示提示
  e.preventDefault();
  // 保存事件以便稍后使用
  deferredPrompt = e;
  // 更新 UI 以通知用户可以添加到主屏幕
  addBtn.style.display = 'block';
});

addBtn.addEventListener('click', (e) => {
  // 隐藏我们的用户界面,显示安装提示
  addBtn.style.display = 'none';
  // 显示之前保存的提示
  deferredPrompt.prompt();
  // 等待用户的响应以决定是否安装应用程序
  deferredPrompt.userChoice.then((choiceResult) => {
      if (choiceResult.outcome === 'accepted') {
        console.log('用户接受了安装提示');
      } else {
        console.log('用户拒绝了安装提示');
      }
      deferredPrompt = null;
    });
});

在这个例子中,我们首先在全局作用域中定义了一个变量 deferredPrompt 以保存 beforeinstallprompt 事件。当 beforeinstallprompt 事件触发时,我们阻止了默认的安装提示,并将事件保存在 deferredPrompt 中。此外,我们还更新了用户界面,告诉用户他们可以安装 Web 应用程序。

然后,我们添加了一个点击事件监听器到安装按钮。当用户点击安装按钮时,我们隐藏用户界面的安装按钮,并显示之前保存的安装提示。我们还添加了一个对用户的响应进行监听的 Promise,以判断用户是否接受了安装提示。

这个例子展示了如何使用 beforeinstallprompt 事件来提供更个性化的用户体验。开发人员可以根据应用程序的需求和用户的行为来决定何时显示安装提示,而不是让浏览器自动显示。

标签:提示,beforeinstallprompt,用户,应用程序,事件,安装,deferredPrompt,关于
From: https://www.cnblogs.com/sap-jerry/p/17638698.html

相关文章

  • 关于 SAP S/4HANA 的版本号机制
    SAPS/4HANA是一款全面的企业资源计划(ERP)软件,是SAP的下一代ERP系统,具有许多创新特性和增强功能。其版本号规则涉及到版本类型、主版本、支持包等,我将逐步解释并举例说明。SAPS/4HANA版本号规则:SAPS/4HANA的版本号由多个部分组成,每个部分都传达了特定信息,如版本类型、主版本、......
  • 为什么 cl_gui_dialogbox_container 只能在 at selection output 事件中使用
    首先,我们来了解一下cl_gui_dialogbox_container类。这是SAP的一个类,用于创建一个对话框容器,通常用于在对话框中显示一些GUI控件,例如:图形、控件等。cl_gui_dialogbox_container对象主要用于在模态对话框中创建自定义容器,它允许我们将GUI控件(如ALVGRID,HTMLViewer等)嵌入......
  • 关于 SAP ABAP 里的锁类型 Lock Type
    在SAP帮助文档里有关于ABAPlock支持的全部类型和说明,总共支持四种类型的锁:S,E,X和O.注意E锁和X锁的区别是,E锁可以在同一个事务里多次被请求,但X锁即使在同一个事务里,也只能被请求一次。我在SAPCRM系统里看到OneOrder页面点击Edit按钮时,背后使用的Lock......
  • 关于 SAP ABAP Enqueue Function Module 的输入参数 _wait
    我们查看ABAP系统根据LockObject自动生成的EnqueueFunctionModule,可以发现它有一个名叫_wait的输入参数,默认值为space:该参数决定了发生锁冲突时的锁行为。开发人员有以下选择:初始值:如果由于存在竞争锁而导致锁定尝试失败,则会触发异常FOREIGN_LOCK。X:如果由......
  • 事件流的2个阶段
    第一个阶段:由父到子(捕获)第二个阶段:由子到父(冒泡)绑定事件/注册事件事件源.addEventListener(事件类型,事件函数,是否使用捕获)其中第三个参数默认为false,不使用捕获,实际工作也多使用冒泡,如事件委托L0的事件是没有捕获阶段的,如事件源.onclick=事件函数如果要使用捕获,就需要......
  • 关于 n+1 个点可以唯一确定一个 n 次函数的证明
    设原函数\(f(x)=\sum\limits_{i=0}^{n}{a_ix^i}\)。定义一个范德蒙矩阵\(V\)为:\[V=\begin{bmatrix}1&x_0&x_0^2&\cdots&x_0^n\\1&x_1&x_1^2&\cdots&x_1^n\\1&x_2&x_2^2&\cdots&x_2^n......
  • Lnton羚通关于如何使用nanoPC-T4 安装OpenCV
    nanoPC-T4安装OpenCVNote:OpenCVhasbeenpre-installedinFriendlyCore/FriendlyDesktop(Versionafter201905)anddoesnotrequiremanualinstallation.PleasedownloadthelatestFriendlyCore/FriendlyDesktopImagefilefromthefollowingURL:http://downl......
  • 全局事件总线
    全局事件总线——就是用来组件间通信使用的;可以理解为事件订阅main.js就一行代码Vue.prototype.$bus=newVue()1、组件种订阅this.$bus.on(eventName,function(params){})2、组件中发布this.$bus.$emit(eventName,params)解释:去官网可以看到一些用法:vm.$onvm.$emi......
  • Lnton羚通关于安装 Visual Studio 2022 Community 卡住了&& 安装 Windows SDK(Softwar
    【问题原因】a.系统升级了;b.之前卸载没卸载干净,注册表里存在旧的信息;【解决过程】1.查看日志在资源管理器中输入%TEMP%\windowssdk,查看日志文件,找到最新的日志文件,在文件中搜索Warning出现了一组长串数字,用 {} 括起来的一串,这串数字后面要用;2.微软官方工具微软官方的工具(Micr......
  • 关于自动化设备的线缆的一些介绍
    前言为了更好适用提高图纸规范性,重点记述线缆的一些细节与介绍。目录:电缆国际标准电缆标准规格线缆载流量/计算电缆颜色识别电缆线号方向/标注规则工业自动化线缆种类应用正文(一)电缆国际标准 (二)电缆提供的标准规格定制不在其内。(三)线缆载流量/计算  (四)电......