在Google跟踪代码管理器中,可以根据css选择器匹配触发触发器。如果html元素与css选择器匹配,则会触发触发器(此处提供更多详细信息:http://www.simoahava.com/analytics/matches-css-selector-operator-in-gtm-triggers/)
目前我使用以下css选择器匹配来识别是否应该触发触发器:
div#admin-button-id, div#admin-button-id *
因此逗号前面的第一部分表示一种可能性,它匹配所有div元素和id admin-button-id。 第二个可能性(在逗号之后)匹配所有html元素,这些元素是具有id admin-button-id的div元素的子元素。这可行,但我更喜欢一个版本,我不必复制div#admin-button-id。所以,像
div#admin-button-id *?
表示孩子是可选的。有没有这样一个有效的结构?
答案 0 :(得分:2)
根据@nyen的建议,我提出了以下解决方案:
我必须处理以下标记代码(ommited不必要的css类):
<div id="admin-button-id">
<span>
<span>Administration</span>
</span>
</div>
可以单击此按钮的各个部分,最里面的跨度,中间跨度或外部div。但只有外部div包含一个id,我可以用它在我的GTM触发器中匹配。因此,在GTM中,我创建了一个名为'computedClickId'的用户定义变量,类型为'Custom JavaScript'。自定义函数在向外的方向上搜索dom树中的id(从最里面的span到outher div):
function() {
if ({{Click Element}}.id != "") {
return {{Click Element}}.id;
}
if ({{Click Element}}.parentNode.id != "") {
return {{Click Element}}.parentNode.id;
}
return {{Click Element}}.parentNode.parentNode.id;
}
{{Click Element}}
是GTM提供的html元素。所以现在在我的html元素中点击发生的地方并不重要,变量calculatedClickId
总是被设置为外部div的id。
这使我可以轻松地在触发器配置中使用变量calculatedClickId
:
我知道自定义javascript方法不是防弹的(还),可能会进一步细化,但这个解决方案是对css选择器方法的改进。