• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[JQUERY] jwplayer, Anlaytic Daten werden nicht korrekt an google übertragen

W

webuser57

Guest
Hallo,

auf eine Seite sind zwei Videos eingebaut worden.
Die Videos werden mit JWPlayer ausgeliefert.
Hier Bsp-Code:
HTML:
…
<div id=”myvideo1” class="video" data-video-height="140" data-video-width="350" data-video-titel="my test titel 1” data-video-file=”path_to_the_file” data-video-image=”path_to_the_image”></div>
    …
  <div id=”myvideo2” class="video" data-video-height="290" data-video-width="500" data-video-titel="my test titel 2” data-video-file=”path_to_the_file” data-video-image=”path_to_the_image”></div>
...

<script>
    $(window).load( function(e)  
    {
        var id, height = 0, width = 0, tite, file, image, sources;
        $('.video').each( function(  )
        {
    	        id 	   = $(this).attr('id');     
            	titel  = $(this).attr('data-video-titel');
            	height = $(this).attr('data-video-height');
                width  = $(this).attr('data-video-width');
                image  = $(this).attr('data-video-image');
                file   = $(this).attr('data-video-file');
    
    sources = [ {'file': file } ];
    
        jwplayer( id ).setup({
         'height': height,
         'width': width,
         'image': image,
         'sources': sources,
         'events': {
    	     onPlay: function (event) {
                   console.log("onPlay::titel: "+titel+", "+jwplayer( id ).getPosition().toFixed(0));                         
        		   ga('send', 'event', 'Video Play', titel, event.newstate+": "+jwplayer( id ).getPosition() );
             },
             onPause: function (event) {
                   console.log("onPause::titel: "+titel+", "+jwplayer( id ).getPosition().toFixed(0));                         
                   ga('send', 'event', 'Video Pause', titel, event.newstate+": "+jwplayer( id ).getPosition().toFixed(0) +" ( "+id+")" );
             }
          }
       });
        });
    });
</script>

Die Videos werden korrekt ausgeliefert.
Aber beim klicken auf das erste Video, „myvideo1“, werden die Daten, dh, Titel, des zweiten Videos an google Analytic übergeben!
Das ist falsch.
Wie muss ich den JavaScritp Code korrekt einbinden, damit die richtigen Daten an google übertragen werden?

Grüße
webuser
 
Die Variablen sind im falschen Scope:
Code:
    $(window).load(function(e){
    	$('.video').each(function(){
    		var id = $(this).attr('id');
    		var titel = $(this).attr('data-video-titel');
    		var height = $(this).attr('data-video-height');
    		var width = $(this).attr('data-video-width');
    		var image = $(this).attr('data-video-image');
    		var file = $(this).attr('data-video-file');

    		var sources = [{
    			'file': file
    		}];

    		jwplayer(id).setup({
    			'height': height,
    			'width': width,
    			'image': image,
    			'sources': sources,
    			'events': {
    				onPlay: function(event) {
    					console.log("onPlay::titel: " + titel + ", " + jwplayer(id).getPosition().toFixed(0));
    					ga('send', 'event', 'Video Play', titel, event.newstate + ": " + jwplayer(id).getPosition());
    				},
    				onPause: function(event) {
    					console.log("onPause::titel: " + titel + ", " + jwplayer(id).getPosition().toFixed(0));
    					ga('send', 'event', 'Video Pause', titel, event.newstate + ": " + jwplayer(id).getPosition().toFixed(0) + " ( " + id + ")");
    				}
    			}
    		});
    	});
    });
 
Kannst Du bitte das etwas naher erläutern?
Klar.

Du deklarierst die Variablen im Eventlistener von window.onload. Somit sind diese für jeden Aufruf im .each identisch und damit auch im onPlay und onPause. Du überschreibst sie hald jedes mal.

Wenn du sie in .each deklarierst, hat jeder Durchlauf von .each einen eigenen Satz und du überschreibst nichts.
 
Klar.

Du deklarierst die Variablen im Eventlistener von window.onload. Somit sind diese für jeden Aufruf im .each identisch und damit auch im onPlay und onPause. Du überschreibst sie hald jedes mal.

Wenn du sie in .each deklarierst, hat jeder Durchlauf von .each einen eigenen Satz und du überschreibst nichts.

Danke für den Tipp, das war der Fehler
 
Zurück
Oben