簡體   English   中英

PWA:preventDefault 不適用於 beforeinstallprompt

[英]PWA: preventDefault not working with beforeinstallprompt

我正在 Android 設備上的 Chrome 70 上進行測試,這應該可以很好地防止 AddToHomescreen 提示顯示。 我無法阻止提示或捕獲以供以后使用。 每次加載頁面時都會繼續顯示提示。

文本框已填充並顯示 beforeinstallprompt 事件正在加載。 事件處理程序上的 preventDefault 不會阻止提示。

為什么??????

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="theme-color" content="#eaa103">
    <link rel="manifest" href="/pwa/manifest.json" />
    <title>Some App</title>
    <link rel="stylesheet" href="/pwa/css/bootstrap.min.css" />
    </head>
    <body>

    <div class="container">
        <testbox></testbox>
    </div>

    <script src="/pwa/js/jquery.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">

    </script>

    <script>
    var deferredPrompt;
    window.addEventListener('beforeinstallprompt', function(e) {
        // Prevent Chrome 67 and earlier from automatically showing the prompt
        e.preventDefault();
        // Stash the event so it can be triggered later.
        deferredPrompt = e;
        $("testbox").html("beforeinstallprompt loaded");
        return false;
    }); 
    </script>

    </body>
    </html>

根據Google Developers的這篇文章: https//developers.google.com/web/updates/2018/06/a2hs-updates

啟動Chrome 68 [...]無論是否在beforeinstallprompt事件上preventDefault() ,都會顯示迷你信息beforeinstallprompt

因此,目前開發人員無法在移動Chrome版本> 67上阻止頁面上的橫幅廣告(適用於桌面版和舊版移動版<68)。

這里有更多信息: https//developers.google.com/web/fundamentals/app-install-banners/ 就像聲明的那樣:

mini-infobar是Android上Chrome的臨時體驗

如果被用戶解雇,則在足夠的時間(~3個月)過后才會顯示。

我希望這有幫助。

很可能 Window 未定義,因為您的頁面正在服務器端呈現。

解決方案:在觸發事件之前進行檢查,或者通過在運行時運行腳本來確保您的代碼在客戶端運行。

如果您使用 React 或 Nextjs,請使用 useEffect 鈎子或 componentDidMount。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM