gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:49:35 24 4
gpt4 key购买 nike

在 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
});
}*/
}

最佳答案

您的问题破坏了 JavaScript 语法。 For 循环需要用大括号括起来,如果可能的话,请始终使用它们,例如如果。我建议使用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
});
}*/
}

关于javascript - Google 跟踪代码管理器中的 JavaScript Try-Catch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com