`
Fangrn
  • 浏览: 814293 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

该如何加载google-analytics(或其他第三方)的JS

    博客分类:
  • j2ee
阅读更多

    很多网站为了获取用户访问网站的统计信息,使用了google-analytics或其他分析网站(下面的讨论中只提google-analytics, 简称ga)。注册ga后,ga就会生成一段js脚本,很多人直接把这段js复制到<body>的最后面就完事(包括 博客园、CSDN、BlogJava)。可是ga自动生成的这段JS真的就是最合理的吗?

     哪怎么样才算是合理,怎样才是不合理了?因ga只是1个分析工具,它的使用绝对不能影响到我们的程序,如果影响了,则是不合理的。不影响则是合理的。

 

目前ga的使用:

 

     先看看ga自动生成的js脚本,如下: 
<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script> 
<script type="text/javascript"> 
try {
var pageTracker = _gat._getTracker("UA-123456-1");
pageTracker._trackPageview();
} catch(err) {}</script> 

 

      看这段代码,使用document.write来加载JS,注意了,这样加载js是阻塞加载的,就是这个js没加载完,后面的所有资源和JS都不能下载 和执行。可能你会觉的这段代码在body的最后面,后没已经没内容,没什么会阻塞的了。

     还有一些你忽略了,相信很多人在写JS的时候需要在页面加载完毕后执行一些JS或AJAX,一般写在window.onload 事件,或者写入jquery的$(document).ready()方法中。这些JS就会被阻塞。如果我们的页面上很多数据在 window.onload中使用AJAX加载,而偏偏这个时候ga因为某些原因(和谐和谐)不能访问,或者访问很慢的时候。问题就来,我们自己的JS一 直在等待ga的JS加载完,只有等ga的js加载超时后才会执行我们的JS。
    
     
     实例:
       下面的代码使用jquery在document.ready发送1个ajax请求(请求126.com)。测试前修改host文件,让ga的js无法加 载:
      <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
			<html xmlns="http://www.w3.org/1999/xhtml">
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
				<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
				<script type="text/javascript">
					$(document).ready(function(){
						$.get("http://www.126.com/");
					});
			  </script>	
			</head>
			<body>
				<script type="text/javascript"> 
					var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
					document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
					</script> 
					<script type="text/javascript"> 
					try {
					var pageTracker = _gat._getTracker("UA-123456-1");
					pageTracker._trackPageview();
					} catch(err) {}</script> 
			</body>
			</html>
       监控图:
      

 

上图可以看出ga加载不了,在20秒超时后,才执行我们的ajax请求,我们的ajax请求才花0.173s,但却等了20s。

 

合理使用ga:

 

   要合理使用ga,需要解决2个问题:
      1. 如何非加载ga的js,
      2. 如何在ga的ja加载完毕后立刻执行 var pageTracker = _gat._getTracker("UA-123456-1");pageTracker._trackPageview(); 代码。
   
   非阻塞加载js的方法,主要有2种:
      1. 动态创建<script标签
      2.使用new Image().src="", 这种方法只会下载JS,而不会解析JS。所以用这个加载js后,里面的函数也不能调用(这种方法一般用于预加载)。
      
   完善后的代码:
	   	<script type="text/javascript"> 
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			var head = document.getElementsByTagName("head")[0] || document.documentElement;
			var script = document.createElement("script");
			script.src = gaJsHost + "google-analytics.com/ga.js";

			var done = false; // 防止onload,onreadystatechange同时执行
			// 加载完毕后执行,适应所有浏览器
			script.onload = script.onreadystatechange = function() {
				if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){
					done = true;
					try {
						var pageTracker = _gat._getTracker("UA-123456-16");
						pageTracker._trackPageview();
					} catch(err) {}
					script.onload = script.onreadystatechange = null;
				}
			}; 
			head.insertBefore(script,head.firstChild);
		</script>
 上面代码修改自jquery的ajax代码。上面代码很容易理解,动态创建script来加载js,通过onload,或 onreadystatechange 事件来加载完毕后执行代码。
 
 代码修改完毕后再监控测试如下;
 
 
 图中看出ga照样加载了20s,但我们的ajax请求并没有等20s后才执行,而是立刻执行了。
jquery 加载ga:
    可能你觉的上面的代码写的比较多,比较繁琐,如果你用jquery的话,可以简化成下面这样:
    
 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
$.getScript(gaJsHost + "google-analytics.com/ga.js",function(){
try {
var pageTracker = _gat._getTracker("UA-123456-16");
pageTracker._trackPageview();
} catch(err) {}
});
分享到:
评论

相关推荐

    PyPI 官网下载 | django-google-analytics-app-4.4.1.tar.gz

    PyPI是Python软件包的仓库,提供了丰富的第三方库,方便开发者快速获取和安装所需组件。下载完成后,解压文件,你会看到`django-google-analytics-app-4.4.1`目录,其中包含了源代码、文档和其他必要的文件。 接...

    Laravel开发-laravel-google-analytics-tracking

    在Laravel项目中,你可以通过Composer安装第三方库如`spatie/laravel-google-analytics`,这个库提供了方便的API与Google Analytics API交互。在命令行中运行以下命令: ```bash composer require spatie/laravel-...

    Laravel开发-google-analytics

    例如,对于`spatie/laravel-google-analytics`包,你需要添加`Spatie\GoogleAnalytics\GoogleAnalyticsServiceProvider::class`到`providers`数组中。 3. **设置API凭据**:要访问Google Analytics数据,你需要在...

    谷歌统计GoogleAnalytics微信小程序版

    为了保护用户隐私,微信小程序要求所有的第三方数据采集必须经过用户同意。因此,你需要在小程序中添加用户同意条款,并在用户首次使用时提示他们是否同意数据收集。只有在用户同意后,才能开始发送数据到Google ...

    Practical Google Analytics and Google Tag Manager for Developers

    - **第三方服务集成**:提供案例研究,展示如何将GTM与诸如Facebook Pixel、AdWords等第三方服务进行集成。 - **自动化工作流设置**:介绍如何利用GTM中的工作流功能自动化常见的标记管理和数据收集任务。 6. **...

    Google analytics 实战

    - GA部署通常有多种方法,如通过JavaScript代码、GTM或者其他第三方服务。 - 参数调优是提高GA准确性和效率的关键,包括正确配置跟踪代码参数、进行系统测试以确保配置无误等。 9. GA小站的资料与支持: - GA...

    meteor-analytics-node:为流星打包的分析节点 npm

    "meteor-analytics-node" 就是一个专门针对 Meteor 应用设计的分析节点 npm 包,它旨在简化集成各种分析服务的过程,如 Google Analytics、Mixpanel 或其他第三方工具。 然而,值得注意的是,这个包已经不再维护,...

    将网址解码为第三方公司和产品

    - 通过分析URL中的域名来识别第三方服务,如Google Analytics(`google-analytics.com`)、Facebook像素(`facebook.com`)等。 - 检查脚本、CSS链接和图像源,这些可能指向外部服务提供商。 4. **产品识别**: ...

    share.js自定义分享到第三方SNS平台.rar

    "share.js自定义分享到第三方SNS平台"这个压缩包文件,很显然,提供了实现这一功能的JavaScript代码资源。下面我们将详细探讨相关知识点。 1. **自定义分享**: 自定义分享是指网站或应用根据自己的需求设计和定制...

    .net仿google analysis第三方流量监测

    .NET仿Google Analytics第三方流量监测是一种在.NET环境中实现的网站数据追踪和分析技术,它借鉴了Google Analytics的功能,为开发者提供了一种在自己的网站上收集、分析用户行为数据的方法。通过这种方式,开发者...

    ionic-analytics-tutorial:审查分析教程

    在本教程中,我们将深入探讨如何使用Ionic框架与JavaScript技术集成第三方分析服务,以实现对移动应用的深度洞察。"Ionic Analytics Tutorial" 提供了一个详细的学习路径,帮助开发者更好地理解和实施用户行为跟踪。...

    一个快速浏览极光推送第三方授权登陆分享统计的reactnativedemo

    这可以通过集成第三方统计分析工具,如Google Analytics或友盟等实现。开发者需要在React Native应用中引入统计SDK,设置跟踪事件,并在关键操作点调用相关API记录数据。例如,当用户完成分享操作时,可以触发一个...

    web analytics 客户行为分析 js

    此外,还可以集成第三方分析工具,如Google Analytics或Adobe Analytics,它们提供了丰富的分析功能和报告,帮助深入理解用户行为。 总的来说,“web analytics 客户行为分析 js”是通过JavaScript技术收集和分析...

    ganalytics一个小型400B客户端模块用于跟踪GoogleAnalytics分析

    在JavaScript开发中,"其它杂项"标签可能涵盖了广泛的主题,包括但不限于第三方库的使用、兼容性处理、性能优化、错误处理、模块化开发等。ganalytics作为一个小型模块,展示了如何通过精简代码实现特定功能,同时...

    tracking js.rar

    这通常涉及到使用Web APIs,如`getUserMedia`,以及第三方人脸识别库,如`face-api.js`。首先,确保浏览器支持相关API,然后获取用户摄像头权限,处理图像数据并调用人脸识别算法。 5. 数据安全与隐私:在实施任何...

    网页下拉刷新上拉加载插件(pull-to-refresh)完美修改版

    4. **数据分析集成**:项目中提到的“实现分析数据”,可能意味着开发者已经整合了数据分析工具,如Google Analytics或其他第三方服务,以便跟踪用户的滚动行为,从而优化内容呈现和加载策略。 5. **兼容性增强**:...

Global site tag (gtag.js) - Google Analytics