0

我必須修改我們的Google跟蹤代碼管理器容器,並且我很喜歡GTM。我們遇到了使用Fusion Charts的IE8和頁面的問題。有了這個組合,我在gtm.js中有一個javascript錯誤,我發現它在一個Form Submit Listener中。所以我認爲我會在該標籤上添加一個例外。這個例外將是「如果isIE8和hasFusionChartsControl」。這兩個是GTM型 「自定義JavaScript」 的變數,我有這樣的定義:如何根據特定腳本在Google跟蹤代碼管理器中排除代碼在HTML中包含

contientFusionCharts:

function() { 
    var file = "fusioncharts.js"; 
    var scripts = document.getElementsByTagName("script"); 
    for(var i = 0; i < scripts.length; i++) { 
    if (scripts[i].src != undefined && scripts[i].src.substr(scripts[i].src.length-file.length) == file) { 
     return true; 
    } 
    } 

    return false; 
} 

estIE8:

function() { 
    var isIE = !!document.documentMode; // At least IE6 
    var rv = -1; // Return value assumes failure. 
    if (isIE) { 
    if (navigator.appName == 'Microsoft Internet Explorer') { 
     var ua = navigator.userAgent; 
     var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
     if (re.exec(ua) != null) 
      rv = parseFloat(RegExp.$1); 
    } 
    } 

    return (rv > -1 && rv <= 8.0); 
} 

我已經測試了這些JavaScript函數和他們的工作以及IE8。現在我已經定義了一個觸發器: My GTM trigger that is a Page View Event, triggered on Window Loaded and fire On pageHasFusionChartsControls and isIE8

現在我的標籤,我只加了異常:enter image description here

這看都沒什麼問題,但它仍然沒有工作。我可以證明這個標籤存在問題,因爲我創建了一個查看特定頁面的URL的異常,當我瀏覽這個特定頁面時,不再引發js錯誤。但我不想創建指定特定頁面的例外,因爲這是一個Sharepoint站點,用戶可以根據自己的意願創建頁面。所以我不想每次在他們的頁面中使用Fusion Charts控件時都要添加例外。所以我認爲尋找適合Fusion Charts的特定html標籤將是一個好主意,我得出結論,尋找包含fusioncharts.js的腳本將是一個好主意。

如果你有解釋爲什麼它不工作和替代解決方案,這將是偉大的!謝謝!

回答

1

以供將來參考,這裏是我收到的谷歌產品論壇從廝磨艾哈佛答案:

例外只能擋住你已對其進行設置的事件。所以你的 異常將只會阻止「窗口加載」事件。您的標籤 是否在該事件中發射?如果您的標籤在「所有頁面」事件中觸發, 它使用的是頁面視圖,而不是窗口加載事件,因此您需要 來相應地更改您的例外觸發器以匹配 標記的事件。

或者您可以創建一個全局異常,該異常會阻止與其他條件匹配的所有事件 。您可以通過使用自定義事件 觸發器來執行此操作,並將事件名稱設置爲。*(並檢查RegEx)。

http://www.simoahava.com/gtm-tips/block-your-tags-with-trigger-exceptions/

廝磨

我選擇創建一個使用自定義事件觸發事件名稱爲全局例外。*(使用正則表達式),並且工作得很好。

相關問題