首页 文章

Google跟踪代码管理器中的JavaScricript Try-Catch错误

提问于
浏览
1

在GTM(Google跟踪代码管理器)中,您可以拥有自定义JavaScript宏,这些宏是匿名函数,可返回标记或规则使用的内容 .

我的每个宏都在使用try / catch,因此我们可以轻松地显示任何实现错误(引发由UA标记捕获的dataLayer事件)

但是这里有点奇怪...如果我取消注释try / catch,GTM固执地拒绝使用它并且不会给出任何错误...但是进入永远保存模式(即浏览器一直等待某事) . 我知道这个代码在我在调试控制台中运行时有效...我还有其他使用相同try / catch技术的宏...有什么想法?

function () {
    /*try {*/
        var v = '';
        // HTML5 video
        if(document.getElementsByTagName('video').length) v += 'video,';
        // Youtube video
        var i = document.getElementsByTagName('iframe');
        for(x = 0; x < i.length; x++)
            if(/youtube.com\/embed/.test(i[x].src)) {
                v += 'youtube,';
                break;
            }
            // Limelight video
        if(document.getElementsByClassName('LimelightEmbeddedPlayer')) v += 'limelight,';
        return v.length ? v.slice(0, -1) : v;
    /*} catch(e) {
        dataLayer.push({
            'event': 'error',
            'action': 'GTM',
            'label': '713-Video Type:' + e.message
        });
    }*/
}

1 回答

  • 1

    您的问题破坏了JavaScript语法 . For-loop需要在它周围支撑,如果可能的话,总是使用它们 . IFS . 我建议至少每隔一段时间使用JSHint来测试代码的语法错误 .

    我稍微修改了你的源代码,试试这个:

    function () {
        /*try {*/
            var v = '';
            // HTML5 video
            if(document.getElementsByTagName('video').length) {
                v += 'video,';
            }
            // Youtube video
            var i = document.getElementsByTagName('iframe');
            for(var x = 0, l = i.length; x < l; x++) {
                if(/youtube\.com\/embed/.test(i[x].src) && !/youtube/.test(v)) {
                    v += 'youtube,';
                }
                // Limelight video
            }
            if(document.getElementsByClassName('LimelightEmbeddedPlayer')) {
                v += 'limelight,';
            }
            return v.length ? v.slice(0, -1) : v;
        /*} catch(e) {
            dataLayer.push({
                'event': 'error',
                'action': 'GTM',
                'label': '713-Video Type:' + e.message
            });
        }*/
    }
    

相关问题