如何避免谷歌分析加载延迟加载事件监听器时脱机

How to avoid google-analytics-loading delaying load event listener when offline

本文关键字:事件 监听器 脱机 延迟加载 加载 何避免 谷歌      更新时间:2023-09-26

我有一个应用程序可以在线和离线工作。我已经包括GA与异步上的身体。我还具有处理与window上的load事件侦听器相关的DOM的核心函数。当系统未连接时,尝试加载ga.js文件需要花费大量时间。这可以防止load事件的发射。那么我该如何避免这种情况呢?我可以使用DOMContentLoaded,但这将是同样的事情,因为js文件包含在DOM内容。

试一试。

  1. 允许ga正常加载
  2. 在全局变量(gclone)中存储一个dom元素的引用。
  3. 我们设置一个30秒的超时时间。我们还设置了另一个全局变量(loaddgoogleanalytics),并将其初始值设置为0。当ga加载时,我们将这个变量设置为1。在超时到期时,我们检查是否加载了ga。如果没有,则删除dom元素ga。

    <script type="text/javascript">
        var loadedGoogleAnalytics = 0;
        var gaClone;
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-123456789-1']);
        _gaq.push(['_trackPageview']);
        _gaq.push(function() {
            loadedGoogleAnalytics = 1;
            //console.log('GA Actualy executed!');
        });
        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
            gaClone = ga;
        })();
        setTimeout(function() {
            //console.log('timeout fired');
            if (loadedGoogleAnalytics != 1) {
                gaClone.parentNode.removeChild(gaClone); 
            }
        }, 30000);
    </script>