如何避免谷歌分析加载延迟加载事件监听器时脱机
How to avoid google-analytics-loading delaying load event listener when offline
我有一个应用程序可以在线和离线工作。我已经包括GA与异步上的身体。我还具有处理与window
上的load
事件侦听器相关的DOM的核心函数。当系统未连接时,尝试加载ga.js文件需要花费大量时间。这可以防止load
事件的发射。那么我该如何避免这种情况呢?我可以使用DOMContentLoaded
,但这将是同样的事情,因为js文件包含在DOM内容。
试一试。
- 允许ga正常加载
- 在全局变量(gclone)中存储一个dom元素的引用。
-
我们设置一个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>
相关文章:
- 在下拉式javascript事件监听器中选择时触发事件
- 如何在音频元素上使用React媒体合成事件监听器
- Javascript事件监听器让我很困惑
- javascript的事件监听器将下拉列表转换为输入按钮
- 组合类和事件监听器:`this`关键字
- 将事件监听器添加到画布时出错
- 如何通过javascript触发事件监听器
- 通过事件监听器在circle的文本匹配id上修改circle元素
- 动态添加javascript事件监听器,做一些无法解释的事情
- 事件处理程序&事件监听器彼此独立
- 为什么我在谷歌闭包中编写的事件监听器不起作用
- 如何在JS中使用事件监听器
- 为什么jQuery选择事件监听器会多次触发
- 为什么不'我的手机上没有设备就绪的事件监听器
- 何时在 Cocos2d-js 3.2 中注销事件监听器和定时回调
- javaScript-我们如何将一个事件监听器设置为另一个事件监听器的从属
- 微信/微信JavaScript桥(WeixinJSBridge)使用微信JSBridgeReady事件监听器并函数作为参
- ExtJS拖拽事件监听器在Chrome和Firefox上的工作方式不同
- 在这段代码中,复制自雄辩javascript的ch15,keyup事件监听器做什么
- 向音频元素添加事件监听器;不起作用