国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

該如何加載Google-Analytics(或其他第三方)的JS

開發 前端
很多網站為了獲取用戶訪問網站的統計信息,使用了google-analytics或其他分析網站(下面的討論中只提google-analytics,簡稱ga)。注冊ga后,ga就會生成一段js腳本,很多人直接把這段js復制到的最后面就完事。可是ga自動生成的這段JS真的就是最合理的嗎?

哪怎么樣才算是合理,怎樣才是不合理了?因ga只是1個分析工具,它的使用絕對不能影響到我們的程序,如果影響了,則是不合理的。不影響則是合理的。

目前ga的使用:

先看看ga自動生成的js腳本,如下:

  1. <script type="text/javascript"> 
  2. var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");  
  3. document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' 
  4. type='text/javascript'%3E%3C/script%3E"));  
  5. </script> 
  6. <script type="text/javascript"> 
  7. try {  
  8. var pageTracker = _gat._getTracker("UA-123456-1");  
  9. pageTracker._trackPageview();  
  10. } 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無法加載:

  1.  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. view sourceprint?  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head>  
  6.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  7.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>  
  8.     <script type="text/javascript">  
  9.         $(document).ready(function(){  
  10.             $.get("http://www.126.com/");  
  11.         });  
  12.   </script>    
  13. </head>  
  14. <body>  
  15.     <script type="text/javascript">  
  16.         var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");  
  17.         document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' 
  18. type='text/javascript'%3E%3C/script%3E"));  
  19.         </script>  
  20.         <script type="text/javascript">  
  21.         try {  
  22.         var pageTracker = _gat._getTracker("UA-123456-1");  
  23.         pageTracker._trackPageview();  
  24.         } catch(err) {}</script>  
  25. </body>  
  26. </html>  
  27.      

監控圖:

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

上圖可以看出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. 動態創建

2.使用new Image().src="", 這種方法只會下載JS,而不會解析JS。所以用這個加載js后,里面的函數也不能調用(這種方法一般用于預加載)。

完善后的代碼:

  1.     <script type="text/javascript">   
  2.     var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");  
  3.     var head = document.getElementsByTagName("head")[0] || document.documentElement;  
  4.     var script = document.createElement("script");  
  5.     script.src = gaJsHost + "google-analytics.com/ga.js";  
  6.  
  7.     var done = false// 防止onload,onreadystatechange同時執行  
  8.     // 加載完畢后執行,適應所有瀏覽器  
  9.     script.onload = script.onreadystatechange = function() {  
  10.         if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){  
  11.             done = true;  
  12.             try {  
  13.                 var pageTracker = _gat._getTracker("UA-123456-16");  
  14.                 pageTracker._trackPageview();  
  15.             } catch(err) {}  
  16.             script.onload = script.onreadystatechange = null;  
  17.         }  
  18.     };   
  19.     head.insertBefore(script,head.firstChild);  
  20. </script> 

上面代碼修改自jquery的ajax代碼。上面代碼很容易理解,動態創建script來加載js,通過onload,或 onreadystatechange 事件來加載完畢后執行代碼。

代碼修改完畢后再監控測試如下;

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

圖中看出ga照樣加載了20s,但我們的ajax請求并沒有等20s后才執行,而是立刻執行了。

jquery 加載ga:

可能你覺的上面的代碼寫的比較多,比較繁瑣,如果你用jquery的話,可以簡化成下面這樣:
 

  1.  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");  
  2. $.getScript(gaJsHost + "google-analytics.com/ga.js",function(){  
  3. try {  
  4. var pageTracker = _gat._getTracker("UA-123456-16");  
  5. pageTracker._trackPageview();  
  6. catch(err) {}  
  7. }); 

系列專題:http://developer.51cto.com/art/201104/257581.htm

【編輯推薦】

  1. Web設計師應向肖像畫家學習的11個經驗
  2. 20個新鮮的Web應用 Web設計師不可錯過
  3. Ajax和WEB服務數據格式:自定義返回格式
  4. Ajax和WEB服務數據格式:JSON JSONP
  5. Ajax和Web服務數據格式:XML SOAP HTML
責任編輯:陳貽新 來源: BearRui的博客
相關推薦

2015-11-05 16:44:37

第三方登陸android源碼

2014-07-25 09:33:22

2010-11-12 10:57:37

JavaAndroidGoogle

2014-02-10 10:22:33

微信開發者

2017-12-11 15:53:56

2018-12-04 10:24:23

VueReactJQuery

2021-01-27 10:04:46

鴻蒙HarmonyOS動畫

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2021-04-27 15:30:54

鴻蒙HarmonyOS應用

2024-01-05 17:29:32

2011-05-03 10:35:46

2022-05-21 23:56:16

Python庫搜索Python

2023-07-26 08:21:33

2017-05-16 13:24:02

LinuxCentOS第三方倉庫

2019-09-03 18:31:19

第三方支付電商支付行業

2016-10-21 14:09:10

2009-12-31 14:38:34

Silverlight

2017-11-01 06:40:33

2013-04-08 09:28:05

Chrome OS第三方云存儲
點贊
收藏

51CTO技術棧公眾號

中文子幕无线码一区tr| 亚洲美女偷拍久久| 91九色精品视频| 在线高清欧美| 亚洲黄色有码视频| 1pondo在线播放免费| 亚洲超碰精品一区二区| 天天色综合4| 国产精品嫩草影院com| 国产91美女视频| 99re亚洲国产精品| 青青青青草视频| 国产a久久麻豆| 日本福利视频网站| 国产69精品久久777的优势| 影音先锋在线亚洲| 男人的天堂亚洲| 日韩一本精品| 激情综合网最新| 成人毛片100部免费看| 精品无人区卡一卡二卡三乱码免费卡 | 国产免费一区二区三区在线能观看 | 欧美在线视频导航| 日韩三级av| 88xx成人精品| 亚洲人挤奶视频| 欧美中文在线免费| 国产一区三区在线播放| 青青久久av北条麻妃黑人| 亚洲三级性片| 国产精品久久久久久亚洲调教| 日韩88av| 国产欧美韩日| 日本成人超碰在线观看| 中国一级大黄大黄大色毛片| 国产激情91久久精品导航| 成人黄色大片网站| 日本一区二区三区国色天香| 成人免费网址在线| 精品国产乱码久久久久酒店| av在线免费一区| 亚洲精品97久久| 伊人久久精品| 国产精品第一页在线| 综合激情在线| 亚洲v国产v在线观看| a级高清视频欧美日韩| 特级丰满少妇一级| 欧美日韩免费看| 欧美69xxx| 国产亚洲精品va在线观看| 涩爱av色老久久精品偷偷鲁 | 最新国产の精品合集bt伙计| 特黄特黄的视频| 欧美日韩黄色一区二区| 亚洲精品mv| 全球成人中文在线| 亚洲国产精品第一区二区| 国产成人精品免费看在线播放| 国产午夜亚洲精品理论片色戒| 亚洲激情文学| 亚洲精品网址在线观看| 日韩三级视频| 奇米888一区二区三区| 久久亚洲综合色一区二区三区| 欧美成人明星100排名| 日韩美女一区二区三区四区| 亚州一区二区| 久久久99国产精品免费| 2欧美一区二区三区在线观看视频| 欧美18一12sex性处hd| 亚洲精品久久在线| 夜色77av精品影院| 亚洲看片网站| 一区二区高清在线| 国产啊啊啊视频在线观看| 性欧美xxxx交| 日韩av一二三| 日本午夜免费福利视频| 日韩高清免费观看| 要久久电视剧全集免费| 亚洲成人动漫在线| 欧美视频专区一二在线观看| 六九午夜精品视频| 欧美一区三区二区在线观看| 亚洲视频一区二区在线| 黄视频网站在线观看| 国产精品女人久久久久久| 久久精品国产亚洲a| 香蕉视频在线观看免费| 精品国产一区二区三区久久久狼| 亚洲青涩在线| 日日噜噜夜夜狠狠视频| 日韩小视频在线| 久久久久久穴| 四虎影视在线播放| 久久久久久亚洲精品中文字幕| 日韩精品高清不卡| 视频一区二区三区在线看免费看| 欧美区二区三区| 国产麻豆91精品| 成人直播在线| 亚洲精品欧美日韩专区| 亚洲欧美综合网| 日韩专区视频| 懂色av粉嫩av蜜臀av| 欧美日韩国产a| 大片网站久久| 九色丨porny丨自拍入口| 日韩在线观看免费全| 久久91精品国产91久久小草| 国产51人人成人人人人爽色哟哟 | 九九九九精品| 欧美性xxxxhd| 日韩理论电影院| 91传媒在线观看| 久久久爽爽爽美女图片| 99久久精品情趣| 午夜不卡影院| 中文字幕欧美日韩一区二区| 777午夜精品免费视频| 久久精品久久久| 99re6热在线精品视频播放| 91精品国产99| 中文字幕欧美一| 欧美福利在线播放网址导航| 国产日韩一区二区在线观看| 色悠悠国产精品| 国产一区二区不卡在线| 水蜜桃在线视频| 天天做天天躁天天躁| 最近日韩中文字幕中文| 成人精品免费看| 日韩一区二区三区色| 无遮挡又爽又刺激的视频| 欧美大尺度在线观看| 国产精品情趣视频| 丝袜av一区| 亚洲色图16p| 精品不卡一区二区三区| 日韩视频123| 久久精品国产第一区二区三区| 久热在线观看视频| av在线观看地址| 久久久久久久久91| 亚洲尤物视频在线| 欧美涩涩视频| 白白色在线观看| 国产自产在线视频| 欧美美女被草| 最新国产一区| 四虎4hutv紧急入口| 97在线看免费观看视频在线观看| 欧美国产日产韩国视频| 91热门视频在线观看| japansex久久高清精品| 欧美日韩激情视频在线观看| 欧美成人在线免费视频| 一区二区中文视频| 日本久久综合| 成人午夜影视| 天堂社区 天堂综合网 天堂资源最新版| 91精品国产免费久久综合| 日韩电影一区二区三区| 亚洲涩涩在线| 久久久久国产精品熟女影院| 欧美在线一区二区视频| 男女性激情视频在线观看| 精品久久久av| 一区二区不卡在线播放| 香蕉国产精品| av电影在线地址| 精品久久久久av| 日本免费一区二区三区视频观看| 色婷婷精品久久二区二区蜜臀av | 国产精品久久久久久亚洲毛片 | 男女私大尺度视频| 国产91精品久久久久久| 欧美视频一区二| 高清国产一区二区| 加勒比久久综合| 日本在线视频网址| jizz欧美激情18| 国产精品美女久久久久av福利| 日韩精品久久久久久久玫瑰园| 国产精品福利av| 日韩影院免费视频| 日韩av影院| 国产亚洲成av人片在线观看| 成人网址大全| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 中文在线不卡视频| 亚洲国产成人av网| 麻豆免费精品视频| 啪啪激情综合网| 不卡av免费观看| 最近最好的中文字幕2019免费| 日本精品免费视频| 91香蕉亚洲精品| 欧美日韩第一页|