• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bestätigung für Code benötigt: 2x onClick parallel einsetzen

Marius25

Neues Mitglied
Hallo zusammen,

ich bin absoluter Anfänger in JavaScript, brauche daher eine Bestätigung von euch, ob folgendes von Logik und Syntax her richtig ist!

Hintergrund: Ich möchte die Anzahl der PDF-Downloads auf unserer Webseite parallel über die beiden Systeme Google AdWords Conversion Tracking sowie Google Analytics messen. Beides ist jeweils ist über ein onClick machbar, deswegen muss ich beide onClicks gemeinsam aufrufen lassen/kombinieren.

Erst mal die beiden Codes im Einzelnen:

AdWords Conversion Tracking:

Im Header:
<script type=”text/javascript”> function setIframe() {var pitstopmedia = document.getElementById(‘psm’).innerHTML = ‘<iframe src=”tracking.html” style=”border:none;width:1px;height:1px;” marginheight=”0″ marginwidth=”0″ frameborder=”0″></iframe>’;} </script>

Im Body:
<a href=”...” onclick=”setTimeout(setIframe,2000);”>TEXT</a> <div id=”psm” style=”display:none;”></div>


Analytics:

Im Body:
<a href="…" onClick="_gaq.push(['_trackPageview', '/meineSeite'])">Text</a>

Im Header ist _gaq.push durch den Einbau von Google Analytisc im Allgemeinen vorgegeben durch

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXX']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>



Meine Lösung, um beide miteinander zu kombinieren:

Im Header:
<script type="text/javascript">

function tracking()

{function setIframe() {var pitstopmedia = document.getElementById(‘psm’).innerHTML = ‘<iframe src=”tracking.html” style=”border:none;width:1px;height:1px;” marginheight=”0
marginwidth=”0 frameborder=”0></iframe>’;};

function analytics(){var aufruf = _gaq.push(['_trackPageview', '/meineSeite'])};

};


</script>



... und natürlich mit dem Google Analytics-Code:

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXX']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>



Im Body:
<a href="…" onClick="tracking();">Text</a>


Vielen Dank für Eure Antworten!
 
Zuletzt bearbeitet:
Oder ist die Lösung nix wegen der doppelten Verwendung von _gaq.push in zwei verschiedenen Java-Scripts?


Stattdessen lieber das folgende?

Im Header:
<script type="text/javascript">

function setIframe() {var pitstopmedia = document.getElementById(‘psm’).innerHTML = ‘<iframe src=”tracking.html” style=”border:none;width:1px;height:1px;” marginheight=”0″ marginwidth=”0″ frameborder=”0″></iframe>’;};

</script>


... und natürlich mit dem Google Analytics-Code:

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXX']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>


Im Body:
<a href="…" onClick="setIframe();_gaq.push(['_trackPageview', '/meineSeite'])">Text</a>


Bitte helft mir!
 
Entweder das was Du zuletzt geschrieben hast, leicht abgewandelt:

HTML:
<a href="…" onclick="setTimeout(setIframe,2000);_gaq.push(['_trackPageview', '/meineSeite']);">Text</a>

oder so:

HTML:
<a href="http://www.html.de/javascript-ajax-und-dhtml/..." onclick="tracking();">Text</a>

Code:
function tracking() {
 setTimeout(setIframe,2000);
 _gaq.push(['_trackPageview', '/meineSeite']);
}

Hinweis: Bitte verwende Code-Tags wenn Du Quellcode im Forum zeigst.
 
Hallo threadi,

vielen Dank für deine Antwort.

Also gingen beide Varianten, das ist schon mal gut zu wissen. Welche ist aus deiner/eurer Sicht besser?

Bei beiden müsste ich dann noch jeweils die Funktion setIframe definieren (und _gaq.push nicht), richtig?
Kann man das bei der zweiten Variante mit onclick="tracking();" innerhalb des gleichen Script-Tags machen?
Also so:

Code:
<script type="text/javascript">
function tracking() {
 setTimeout(setIframe,2000);
 _gaq.push(['_trackPageview', '/meineSeite']);
}

function setIframe() {
var pitstopmedia = document.getElementById(‘psm’).innerHTML = ‘<iframe src=”tracking.html” style=”border:none;width:1px;height:1px;” marginheight=”0″ marginwidth=”0″ frameborder=”0″></iframe>’;
} 
</script>
 
Diese Google-Funktionen definierst Du natürlich auch, müssen schließlich im Quellcode stehen. Sie dürfen nur nicht innerhalb einer anderen Funktion stehen, so wie Du es zuerst versucht hast. Dein Gedanke im letzten Beitrag ist somit richtig.

Die bessere Variante ist die zweite, da diese den HTML-Code von JavaScript-Code befreit und auch leicht erweiterbar wäre.
 
Zurück
Oben