(GTM) 悬停时触发 fb 像素

(GTM) Trigger fb pixel on hover

我试图在页面中悬停 div(或其他)时触发 Facebook 像素事件。然而,在我将鼠标悬停在 div 之前,事件似乎是第一次被触发。悬停 div 时,事件指示正确的参数。

还有一件好事,就是捕获其他信息,例如悬停的 div id 或其他信息。

这是我在 GTM 标签中插入的代码。我在页面加载(所有页面)时触发它。

<script> 
$(document).ready(function() {
var startHover = $.now();

$("#product_name").hover(
function(){
    startHover = $.now();
},
function(){
    var endHover = $.now();
    var msHovered = endHover - startHover;
    var seconds = msHovered/1000;
    if (seconds >= 1) {
        fbq('track', 'Hover', {
            domain: {{Page Hostname}},
            page_path: {{Page Path}}
        });
    }
}
);
});
</script>

HTML代码:

<p id="product_name">Product 1</p>

如有任何帮助,我们将不胜感激!

非常感谢。

根据您的代码,我了解到您只想在有人悬停 #product_name 超过 1 秒时触发 fb 事件。

在您的 HTML 代码中请使用此代码:

<script> 
    $(document).ready(function() {
        var timer;
        $("#product_name").mouseenter(function() {
            var that = this;
            timer = setTimeout(function(){
                //var text = $(that).text() //text inside hovered #product_name element
                //var textInSpan =  $(that).find('span').text() //text inside hovered #product_name span element
                //var hoveredId =  $(that).attr('id') //hovered element ID
                //var hoveredClass =  $(that).attr('class') //hovered element class name
                fbq('track', 'Hover', {
                    domain: {{Page Hostname}},
                    page_path: {{Page Path}}
                });
            }, 1000);
        }).mouseleave(function() {
            clearTimeout(timer);
        });
    });
</script> 

在我的代码中,我添加了注释示例,您可以如何接收有关悬停 div 信息的其他信息

如我所见,您的 <p> 元素横跨页面的整个宽度,因此即使您没有将鼠标悬停在确切的元素上,而是仅悬停在包含 <p>,u 寄存器的横截面上悬停事件。

检查这个以查看不一致 https://jsfiddle.net/L9ory5ym/1/ 要修复此问题,请将 width 属性添加到段落元素,以便仅在相关元素上注册事件。

我设法找到了解决问题的方法。基本上我是在所有页面上触发标签,所以 fb 事件是在没有内容的情况下触发的,只有在悬停时才会发送正确的参数 #product_name.

我创建了一个变量 "event" 并推送了一个数据层 "thereisHover"。

dataLayer.push({
   'event': 'thereisHover'
});  

然后我将标准事件分离到另一个标记中,该标记仅在事件 = thereisHover 时触发。