推迟Web安装横幅

时间:2016-09-02 07:13:26

标签: javascript progressive-web-apps

根据developers.google.com,可以推迟Web App Install横幅,但我只能完全取消它。

window.addEventListener('beforeinstallprompt', function(e) {
  console.log('beforeinstallprompt Event fired');
  e.preventDefault();
  return false;
});

一个用例是将提示推迟到页面生命周期的后期,例如在用户执行操作后,或者点击页面底部(表示他们正在与您的网站进行交互)。< / p>

如何推迟网络应用横幅?

2 个答案:

答案 0 :(得分:2)

尝试检查此documentation,是否可以帮助您。

以下是推迟提示的完整代码。

var deferredPrompt;

window.addEventListener('beforeinstallprompt', function(e) {
  console.log('beforeinstallprompt Event fired');
  e.preventDefault();

  // Stash the event so it can be triggered later.
  deferredPrompt = e;

  return false;
});

btnSave.addEventListener('click', function() {
  if(deferredPrompt !== undefined) {
    // The user has had a postive interaction with our app and Chrome
    // has tried to prompt previously, so let's show the prompt.
    deferredPrompt.prompt();

    // Follow what the user has done with the prompt.
    deferredPrompt.userChoice.then(function(choiceResult) {

      console.log(choiceResult.outcome);

      if(choiceResult.outcome == 'dismissed') {
        console.log('User cancelled home screen install');
      }
      else {
        console.log('User added to home screen');
      }

      // We no longer need the prompt.  Clear it up.
      deferredPrompt = null;
    });
  }
});

有关详情,请查看此link

答案 1 :(得分:2)

我使用的是Chrome 76,但无法与其他(较旧的)答案一起使用。我查看了Chrome Java脚本调试器,发现需要改用以下代码:

var deferredPrompt;

$(window).on('beforeinstallprompt', function(e) {
    console.log('beforeinstallprompt Event fired');
    e.preventDefault();

    // Stash the event so it can be triggered later.
    deferredPrompt = e.originalEvent;

    return false;
});

*编辑: 仅当使用jquery注册事件时才需要通过e.originalEvent获取事件。