2017-03-22 4 views
0

in meiner Fußzeile nicht definiert habe ich ein div Abschnitt wie folgt strukturiert:Individuelle Javascript in google return-Tag-Manager

<div id="text_icl-7" class="widget widget_text_icl">   
<div class="textwidget"> 
<p style="text align:justify;"> 
<img src="image.jpg" alt="YC logo"> 
Some text 
</p> 
</div> 
</div> 

I aufnehmen möchten in eine Variable der Textwert, so dass ich dies schreibe in GTM:

function() { 
var desc = document.getElementById("text_icl-7").childNodes[1]; 
var p = desc.childNodes[1].childNodes[2]; 
return p; 
} 

Das Problem ist, dass beim Debuggen der Seite der Wert der Variablen nicht definiert ist. ich versuche, das Skript in einer anderen benutzerdefinierten Seite und es funktioniert, schreibe ich das Skript auf diese Weise:

(function(d) { 
var desc = document.getElementById("text_icl-7").childNodes[1]; 
var p = desc.childNodes[1].childNodes[2]; 
console.log(p) 


})(document) 

In Konsole ich den Text bekommen, aber nicht in Tag-Manager, warum ?? Danke

Antwort

0

Ich kann nicht debuggen, warum Sie undefinierte Werte erhalten, aber ich vermute, dass eine benutzerdefinierte JavaScript-Variable nicht das ist, was Sie in diesem Fall benötigen.

Sie können den Text in einem DOM-Element mithilfe einer Google Tag Manager-DOM-Variable zurückgeben. Konfigurieren Sie Ihre Variable so, dass sie einen CSS-Selektor verwendet, der Elemente auswählt, die mit #text_icl-7 > p übereinstimmen. Wenn das Feld 'Attribut' leer gelassen wird, wird standardmäßig der Text zurückgegeben, der mit dem Element enthalten ist.

DOM Variable

0

i wurde von GTM Forum geholfen. Das corret Skript ist:

function() { 
    var el = document.querySelector('#text_icl-7'); 
    return el && (el.textContent || el.innerText); 
} 

Jetzt funktioniert es, vielleicht die Lösung einer dom Variable würde auch Werke, dank