2016-02-28 25 views
1

這是我在隨機頁面上看到很多的代碼。我導航到的大多數頁面上的這個腳本是什麼?

我認爲這是一個谷歌跟蹤代碼,但有人可以確認嗎?

當我在JSFiddle中運行它時,似乎沒有任何事情發生。

var tvt = tvt || {}; 
 
tvt.captureVariables = function(a) { 
 
    for (var b = new Date, c = {}, d = Object.keys(a || {}), e = 0, f; f = d[e]; e++) 
 
    if (a.hasOwnProperty(f) && 
 
     "undefined" != typeof a[f]) try { 
 
     var g = []; 
 
     c[f] = JSON.stringify(a[f], function(a, b) { 
 
     try { 
 
      if ("function" !== typeof b) { 
 
      if ("object" === typeof b && null !== b) { 
 
       if (b instanceof HTMLElement || b instanceof Node || -1 != g.indexOf(b)) return; 
 
       g.push(b) 
 
      } 
 
      return b 
 
      } 
 
     } catch (c) {} 
 
     }) 
 
    } catch (l) {} 
 
    a = document.createEvent("CustomEvent"); 
 
    a.initCustomEvent("TvtRetrievedVariablesEvent", !0, !0, { 
 
    variables: c, 
 
    date: b 
 
    }); 
 
    window.dispatchEvent(a) 
 
}; 
 
window.setTimeout(function() { 
 
    tvt.captureVariables({ 
 
    'dataLayer': window['dataLayer'] 
 
    }) 
 
}, 2000);

+0

這不是我見過的任何Google Analytics分析版本。它可能是由插件在瀏覽器中注入的?你在哪裏看到這個? – recursive

+0

如果您在任何地方都能看到此代碼,則可能會通過瀏覽器擴展插入此代碼。嘗試加載隱身模式中的頁面(檢查所有擴展功能是否被禁用) – slezica

回答

8

這是一個由Google的Tag Assistant擴展插入的腳本。來源要大得多。

我已經取消了源代碼,在Gist上可以找到here。被警告,這是~6300行長 - 大約兩萬個字符太長,這個答案。

注入發生在line 3030左右,並帶有動態創建的腳本。注意kg,以及他們如何依靠Function.prototype.toString獲取函數的源代碼。

lg = function(a) { 
 
    if (!a.Ab && (a.Ab = !0, a = a.X(), a = Object.keys(a).map(function(a) { 
 
    return "'" + a + "': window['" + a + "']" 
 
    }), 0 < a.length && (!aa.tvt || !aa.tvt.captureVariables))) { 
 
    var b = document.createElement("script"); 
 
    b.textContent = "var tvt = tvt || {}; tvt.captureVariables = " + kg + ";window.setTimeout(function() {tvt.captureVariables({" + a.join(",") + "})}, 2000);"; 
 
    (document.head || document.documentElement).appendChild(b) 
 
    } 
 
}

kg可以發現immediately afterwards,如下,這與你貼什麼對應。

kg = function(a) { 
 
    for (var b = new Date, c = {}, d = Object.keys(a || {}), e = 0, f; f = d[e]; e++) 
 
    if (a.hasOwnProperty(f) && 
 
     "undefined" != typeof a[f]) try { 
 
     var g = []; 
 
     c[f] = JSON.stringify(a[f], function(a, b) { 
 
     try { 
 
      if ("function" !== typeof b) { 
 
      if ("object" === typeof b && null !== b) { 
 
       if (b instanceof HTMLElement || b instanceof Node || -1 != g.indexOf(b)) return; 
 
       g.push(b) 
 
      } 
 
      return b 
 
      } 
 
     } catch (c) {} 
 
     }) 
 
    } catch (l) {} 
 
    a = document.createEvent("CustomEvent"); 
 
    a.initCustomEvent("TvtRetrievedVariablesEvent", !0, !0, { 
 
    variables: c, 
 
    date: b 
 
    }); 
 
    window.dispatchEvent(a) 
 
};

有關extenstion甲書籍說明,從About Tag Assistant

關於標籤助理

標籤助理是一款Chrome擴展程序,可自動驗證谷歌跟蹤腳本的任何頁面上執行。目前,它的工作原理爲:

  • 谷歌Analytics(分析)(ga.js)的

  • 谷歌分析(dc.js)的

  • AdWords轉化跟蹤

  • AdWords再營銷(傳統)

  • AdWords再營銷(新的再營銷代碼)

  • 雙擊泛光燈

  • 谷歌標籤管理

如何標記助理工作

安裝擴展後,你會看到一個圖標,指示你的頁面」標籤上的地位重新觀看。

  • 有「x」灰色圖標表示沒有代碼在頁面

  • 一個綠色的指示燈將顯示是否有效的標籤上發現找到。在圖標中的數字表示所發現的

  • 藍色指示燈會顯示有改善總體標註健康建議的標籤數量

  • 黃色指示燈將顯示一個標籤被發現有輕微的執行問題

  • 紅色指示燈將顯示一個標籤被發現與關鍵的執行問題

點擊圖標來打開包含標籤去一個窗口尾巴。它顯示了找到了多少個標籤,找到了多少錯誤,所有錯誤,以及可用於解決問題的最相關幫助文檔的鏈接。另外,標籤助理會在可以進行改進時提出建議。例如,如果安裝了過期的Google Analytics代碼,則代碼助理可能會建議您更新爲新的代碼。

+1

Chrome必須將其安裝在我的工作計算機中,並且我忘了它....感謝您的答案 – Matt

2

這只是用於檢查如果一個變量定義的短碼,並且如果不是,將其定義爲一個空對象。它類似於:

if(tvt === undefined){ 
    tvt = {}; 
} 

基本上,它確保了:

  • 的變量被定義(和一個對象)
  • 它保持任何先前的屬性(如果有的話)

var obj1 = {prop: 123}; 
 
var obj2 = obj1 || {}; // obj2 will have the value of obj1 because obj1 is defined 
 
var obj3 = obj3 || {}; // obj will be an empty object 
 

 
document.write(JSON.stringify({obj2: obj2, obj3: obj3}));


免責聲明:我只回答了代碼的第一行,因爲我明白這是你從標題問。但是現在我看到你可能指的是整個代碼塊。如果是這樣,就忽略這個答案。

+0

我從您的答案中學到了很多,謝謝! – Matt

+0

不客氣! – Shomz

相關問題