2017-06-29 3 views
-1

Je suis en train de déclencher un événement de pixel fb lors du survol d'un div (ou autre) dans une page. Cependant, il semble que l'événement se déclenche une première fois avant que je ne survole la div. En survolant la div, l'événement indique les bons paramètres.(GTM) Trigger de pixel de vol stationnaire sur

Une très bonne chose aussi, serait d'avoir des informations supplémentaires capturées comme l'ID plané div ou autre.

Voici le code inséré dans mon I tag GTM. Je le déclenche au chargement de la page (Toutes les pages).

<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> 

Code HTML:

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

Toute aide serait vraiment heureux!

Merci beaucoup.

+0

L'événement est donc déclenché en vol stationnaire uniquement pour la première fois et non sur les événements suivants, est-ce le cas? –

+0

Non, en fait l'événement est déclenché 1sec après le chargement de la page quel que soit le vol que vous faites ou non. Ensuite, lorsque hovering # nom_produit, les paramètres de pixel fb sont correctement envoyés à l'événement. Le comportement souhaité est que le pixel fb ne soit déclenché qu'après avoir passé la variable #product_name div pendant 1sec, pas une seconde après le chargement de la page. – Benjamin

+0

il y a quelque chose d'incorrect avec vol stationnaire, même lorsque la souris est plané partout à la page, il enregistre comme hover.Try ce https://jsfiddle.net/L9ory5ym/ –

Répondre

0

J'ai réussi à trouver une solution à mon problème. Fondamentalement je déclenchais l'étiquette sur toutes les pages, ainsi l'événement de fb a été déclenché sans contenu, les paramètres corrects étant seulement envoyés en passant en revue # nom_produit.

J'ai créé une variable "événement" et a poussé un dataLayer "thereisHover". Puis j'ai séparé l'événement standard en un autre tag qui ne se déclenche que si event = thereHover.

0

Sur la base de votre code, je comprends que vous voulez déclencher événement fb que si quelqu'un vol stationnaire #product_name plus de 1 sec.

Dans votre code HTML s'il vous plaît utiliser ce code:

<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> 

Dans mon code, j'ai ajouté commentais échantillons comment vous pouvez obtenir des informations supplémentaires sur plané div informations

+0

Bonjour Victor! Merci pour votre code! Malheureusement, il semble qu'il se comporte comme le mien: l'événement est toujours déclenché une première fois 1sec après le chargement de la page, ce qui envoie de mauvaises informations à facebook jusqu'à ce que vous survolez #product_name, où les bons paramètres sont ajoutés à l'événement. Pourrions-nous nous débarrasser du feu de chargement de la page et ne déclencher l'événement que lorsque survolons réellement #product_name? – Benjamin

+0

Hmm, je ne peux pas y croire. Peut-être que l'autre tag est en train de tirer et d'envoyer de fausses informations à FB? –

+0

Oui, je ne comprends pas. J'utilise votre code maintenant car il semble plus approprié que le mien, mais il semble qu'il soit déclenché après 1sec partout où se trouve mon curseur, même s'il sort du paragraphe #product_name – Benjamin

0

Comme je le vois étend votre élément <p> à travers toute la largeur de la page et donc même si vous ne survolez pas sur l'élément exact, mais seulement la section contenant le <p>, vous enregistrez un événement hover.

Cochez cette case pour voir l'incohérence https://jsfiddle.net/L9ory5ym/1/ JsFiddle screenshot Pour corriger ce module width attribut à l'élément de paragraphe, pour vous inscrire événement uniquement sur l'élément concerné.

+0

Hello Shivam. En effet ton observation est juste, j'ajouterai une largeur au paragraphe. Cependant, l'événement est toujours déclenché même si je ne plane pas sur cette ligne. Il est systématiquement déclenché 1sec après le chargement de la page, quel que soit mon curseur. – Benjamin

+0

Pouvez-vous probablement mettre un point de débogage sur votre code où la vérification 1 sec est testée. Probablement ce bloc est exécuté ailleurs dans la page, peut-être un code dupliqué ailleurs sur le code –

+0

On dirait que vous avez raison. Si je ne place pas ma souris dans la zone de la fenêtre, rien n'est déclenché. – Benjamin