- 浏览: 814284 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuhanwm910731:
我现在需要实现复选(非级联选择)的树形下拉菜单,麻烦发给我一份 ...
extjs3.X支持树型的下拉控件 -
shine1200:
“所以咱们现在设置的虚拟路径“/message/upload/ ...
weblogic虚拟路径的配置和使用(2) -
icefireforest:
Fangrn 写道jx_dream 写道楼主,我最近在做树形下 ...
extjs3.X支持树型的下拉控件 -
cloudfile:
谢谢分享!
c++库c#调用开发时需要注意的一点 -
xuweilinbegin:
我也要一份哦:xuweilin15353@163.com,谢谢 ...
extjs3.X支持树型的下拉控件
很多网站为了获取用户访问网站的统计信息,使用了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">
"-//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) {} });
发表评论
-
提供IT系统运维支持、系统优化方案
2012-10-26 14:46 6提供IT系统运维支持、系统优化方案,有多个运维实施经验。 ... -
Java指定编码读写文件(UTF-8)
2010-11-30 14:00 3129有时我们需要程序动态生成jsp文件,采取系统默认的编码操作的文 ... -
was6.0发布struts2项目异常
2010-11-18 18:39 2011[10-11-18 18:31:33:609 CST] 000 ... -
利用spring提供的字符编码过滤器
2010-11-14 11:55 2024<!-- spring的字符集过滤器 --> ... -
简单的几句CSS布局口诀
2010-11-10 16:41 1027简单的几句CSS布局口诀,就可以写出精简,标准的样式。 ... -
commons-email笔记
2010-11-10 14:38 1395import java.io.UnsupportedE ... -
如何解决 调用jar程序时出现 outofMemory的问题
2010-10-29 12:02 1254我们在调用 打包好的java程序时,如果程序要加载大量数据的话 ... -
GC策略的调优
2010-09-30 22:30 1651GC 策略在 G1 还没成熟的情况下,目前主要有串行、并 ... -
关于Spring和WebLogic版本兼容的一点小提示
2010-09-30 16:31 2090首先 WebLogic 的各个版本和 JDK 绑定的很紧, 或 ... -
删除WebLogic 10的缓存
2010-09-30 16:07 4663在WebLogic 10上部署了一个应用,最近作了更新并重新部 ... -
weblogic如何强制先加载web-inf/lib下的jar
2010-09-30 16:05 4820方法1: 修改WEB-INF\weblogic.xml (如 ... -
用Log4j自动生成日志
2010-09-27 13:28 1670Log4j是Apache基金会的一 ... -
java smslib发送短信
2010-09-10 10:02 1653public class SendMessage { ... -
Spring定时器的两种实现方式
2010-09-01 21:07 1504有两种流行Spring定时 ... -
使用 Commons-Email 在邮件内容中直接嵌入图片
2010-08-31 20:25 1354我们在发送邮件的时候,如果使用HTML在邮件内容中嵌入图片,& ... -
Struts2中转换Date类型的问题
2010-08-29 09:43 1387Web开发会涉及到很多类型转换的情况。我们知道,页面中的一切值 ... -
java smslib 发送短信错误信息
2010-08-25 15:02 4266org.smslib.GatewayException: GS ... -
rxtx取代javax.comm实现Java跨平台设备端口通信
2010-08-24 08:53 2183From Rxtx <!-- start conte ... -
javascript汉字转拼音代码
2010-08-22 08:21 4600使用方法(1):pinyin.go('汉字'); //例:张家 ... -
关于IE等浏览器在下载JAR文件时的,将后缀更改为zip等问题及解决方案
2010-08-03 12:19 1235httpd.conf这个文件中的mime.types上面,打开 ...
相关推荐
PyPI是Python软件包的仓库,提供了丰富的第三方库,方便开发者快速获取和安装所需组件。下载完成后,解压文件,你会看到`django-google-analytics-app-4.4.1`目录,其中包含了源代码、文档和其他必要的文件。 接...
在Laravel项目中,你可以通过Composer安装第三方库如`spatie/laravel-google-analytics`,这个库提供了方便的API与Google Analytics API交互。在命令行中运行以下命令: ```bash composer require spatie/laravel-...
例如,对于`spatie/laravel-google-analytics`包,你需要添加`Spatie\GoogleAnalytics\GoogleAnalyticsServiceProvider::class`到`providers`数组中。 3. **设置API凭据**:要访问Google Analytics数据,你需要在...
为了保护用户隐私,微信小程序要求所有的第三方数据采集必须经过用户同意。因此,你需要在小程序中添加用户同意条款,并在用户首次使用时提示他们是否同意数据收集。只有在用户同意后,才能开始发送数据到Google ...
- **第三方服务集成**:提供案例研究,展示如何将GTM与诸如Facebook Pixel、AdWords等第三方服务进行集成。 - **自动化工作流设置**:介绍如何利用GTM中的工作流功能自动化常见的标记管理和数据收集任务。 6. **...
- GA部署通常有多种方法,如通过JavaScript代码、GTM或者其他第三方服务。 - 参数调优是提高GA准确性和效率的关键,包括正确配置跟踪代码参数、进行系统测试以确保配置无误等。 9. GA小站的资料与支持: - GA...
"meteor-analytics-node" 就是一个专门针对 Meteor 应用设计的分析节点 npm 包,它旨在简化集成各种分析服务的过程,如 Google Analytics、Mixpanel 或其他第三方工具。 然而,值得注意的是,这个包已经不再维护,...
- 通过分析URL中的域名来识别第三方服务,如Google Analytics(`google-analytics.com`)、Facebook像素(`facebook.com`)等。 - 检查脚本、CSS链接和图像源,这些可能指向外部服务提供商。 4. **产品识别**: ...
"share.js自定义分享到第三方SNS平台"这个压缩包文件,很显然,提供了实现这一功能的JavaScript代码资源。下面我们将详细探讨相关知识点。 1. **自定义分享**: 自定义分享是指网站或应用根据自己的需求设计和定制...
.NET仿Google Analytics第三方流量监测是一种在.NET环境中实现的网站数据追踪和分析技术,它借鉴了Google Analytics的功能,为开发者提供了一种在自己的网站上收集、分析用户行为数据的方法。通过这种方式,开发者...
在本教程中,我们将深入探讨如何使用Ionic框架与JavaScript技术集成第三方分析服务,以实现对移动应用的深度洞察。"Ionic Analytics Tutorial" 提供了一个详细的学习路径,帮助开发者更好地理解和实施用户行为跟踪。...
这可以通过集成第三方统计分析工具,如Google Analytics或友盟等实现。开发者需要在React Native应用中引入统计SDK,设置跟踪事件,并在关键操作点调用相关API记录数据。例如,当用户完成分享操作时,可以触发一个...
此外,还可以集成第三方分析工具,如Google Analytics或Adobe Analytics,它们提供了丰富的分析功能和报告,帮助深入理解用户行为。 总的来说,“web analytics 客户行为分析 js”是通过JavaScript技术收集和分析...
在JavaScript开发中,"其它杂项"标签可能涵盖了广泛的主题,包括但不限于第三方库的使用、兼容性处理、性能优化、错误处理、模块化开发等。ganalytics作为一个小型模块,展示了如何通过精简代码实现特定功能,同时...
这通常涉及到使用Web APIs,如`getUserMedia`,以及第三方人脸识别库,如`face-api.js`。首先,确保浏览器支持相关API,然后获取用户摄像头权限,处理图像数据并调用人脸识别算法。 5. 数据安全与隐私:在实施任何...
4. **数据分析集成**:项目中提到的“实现分析数据”,可能意味着开发者已经整合了数据分析工具,如Google Analytics或其他第三方服务,以便跟踪用户的滚动行为,从而优化内容呈现和加载策略。 5. **兼容性增强**:...