我使用Google跟踪代码管理器来提供Facebook Pixel。
然后,我使用像这样的代码来发射事件
<body>
...
<script>
fbq('track', 'ViewContent', {
content_type: 'product',
content_ids: ['1234'],
content_name: 'ABC Leather Sandal',
content_category: 'Shoes',
value: 0.50,
currency: 'USD'
});
</script>
</body>
但是当代码执行时,由于Facebook Pixel异步加载而fbq尚不可用,因此出现错误。
未捕获的ReferenceError:未定义fbq
我该怎么办?
答案 0 :(得分:5)
使用标签排序功能。这允许以预定义的顺序触发标记,其中后续标记在执行之前等待先前的标记。
创建一个加载FB init代码的标记。在标签触发选项中选择“每页一次”(您只需加载一次,即使它被多个标签使用)。
转到您的Facebook活动代码。在高级设置中查找标签排序选项。将其设置为:
(其中Facebook init是加载FB库的标签,我说你使用标准的bootstrap代码)。启用最后一个复选框后,如果您的安装标记失败,则不会触发。
由于FB引导代码将使用命令队列设置fbq对象,因此您现在可以将数据推送到fbq;即使库仍在下载,数据也将进入命令队列,并且在下载库时将执行调用。
标记序列确保在事件之前设置fbq对象。如果这是您唯一的FB活动,您可以省去麻烦,只需将加载器粘贴到事件代码上方即可。
答案 1 :(得分:1)
7月5日12:48的 Vir us 的解决方案对我来说就像一种魅力!谢谢:-)
编辑:就我而言,我需要在Wordpress网站上实现类似的功能,在该网站上,GTM加载在带有FB Pixel的标题中。因此,打开 标记后放置的代码如下:
<script>
function waitForFbq(callback){
if(typeof fbq !== 'undefined'){
callback()
} else {
setTimeout(function () {
waitForFbq(callback)
}, 100)
}
};
waitForFbq(function() {
fbq('track', 'ViewContent', {content_name: '<?php the_title(); ?>'});
});
</script>
答案 2 :(得分:0)
有相同的错误-最终,所有问题都与排序有关。
当通过WP插件在wordpress网站上的标签管理器中使用像素时,默认情况下将像素加载到页脚中,因此主体中无法识别在页脚中声明之前使用的fbq变量: Google Tag Manager for WordPress options
我尝试了不同的设置,最后放弃了使用插件-只需使用页面构建器的脚本部分(Thrive Architect = TA)将其插入标题部分即可: Custom script setting in TA 现在一切正常!
答案 3 :(得分:0)
无法获得Eike的工作方法,很难,我确定那是正确的方法。
最后得到以下“解决方法”(基本上只是等到fbq初始化):
<script>
function waitForFbq(callback){
if(typeof fbq !== 'undefined'){
callback()
} else {
setTimeout(function () {
waitForFbq(callback)
}, 100)
}
}
waitForFbq(function () {
fbq('track', 'Registered');
})
</script>
也许会帮助某人