• Resolved webwart

    (@webwart)


    Hallo,

    erst einmal herzlichen Dank für das gelungene Plugin.

    Bei der Verwendung ist mir aufgefallen, dass sobald das Tracking ausgehender Links aktiviert ist, sich die URLs nicht mehr in einem neuen Fenster / Tab ?ffnen, sofern ich target=”_blank” verwendet habe. Die URLs werden im gleichen Fenster / Tab ge?ffnet.

    Ist es leicht das zu beheben? Kann ich irgendwie dabei helfen (bin Software-Entwickler)?

    Viele Grü?e!

Viewing 7 replies - 1 through 7 (of 7 total)
  • Thread Starter webwart

    (@webwart)

    Meine kurze Analyse ??

    Ist eigentlich alles in der gag-tracker.js drin.

    Das e.preventDefault() sorgt dafür, dass sich das neue Fenster nicht ?ffnet.
    Der Erfolgscallback nach dem Tracking ?ffnet die URL im gleichen Fenster.

    Kommentiere ich das preventDefault() aus und ersetze den Callback durch ein console.log(“success”) funktioniert alles wie ich es erwartet h?tte.

    Ich hoffe, das hilft weiter und man kann vielleicht was ?ndern oder das Verhalten einstellbar machen?

    Viele Grü?e!

    Plugin Author PascalBajorat

    (@pascalbajorat)

    Hi webwart,

    danke für dein Feedback.

    Ja, das Link-Tracking ist leider etwas problematisch, wir haben es nach der Vorgabe und Vorlage von Google eingebaut.

    Problem ist, wenn wir das e.preventDefault() entfernen, welches verhindert, dass der Link ausl?st. Dann wird in vielen Browsern vor allem bei nicht target _blank Links die neue Seite geladen bevor das Link-Tracking getriggert werden kann.

    Deshalb wird der Aufruf erst unterbunden und dann im Callback mittels window.location durchgeführt. Das funktioniert nur leider nicht für jeden Fall perfekt. Siehe dazu auch die Doku: https://support.google.com/analytics/answer/1136920?hl=de

    Falls du hier bessere M?glichkeiten der Integration siehst, sind diese herzlich willkommen ??

    Beste Grü?e
    Pascal

    Thread Starter webwart

    (@webwart)

    Hallo Pascal,

    Ok, ich versteh das Problem…

    Ich seh eigentlich nur zwei Varianten:
    1. Eine Unterscheidung im Javascript, ungef?hr so:

    var $trackOutboundLink_ga = function(url, callback)
    {
        ga('send', 'event', 'outbound', 'click', url, {
            'transport': 'beacon',
            'hitCallback': callback
        });
    };
    
    var $trackOutboundLink_gtag = function(url, callback)
    {
        gtag('event', 'click', {
            'event_category': 'outbound',
            'event_label': url,
            'transport_type': 'beacon',
            'event_callback': callback
        });
    };
    
    $('a:not([href^="' + gagTracker.url + '"], [href^="#"])').on('click', function (e) {
       var $linkTarget = $(this).attr('target');
       var $url = $(this).attr('href');
    
       var $callback;
    
       if ($target != '_blank') {
          e.preventDefault();
          $callback = function() { document.location = url; };
       }
    
       if (gagTracker.mode == 'ua') {
          $trackOutboundLink_ga($url, $callback);
       } else {
          $trackOutboundLink_gtag($url, $callback);
       }
    });

    // ACHTUNG: Ich habe den Code so nicht getestet ??

    2. Zwei unterschiedliche onClick-Handler, die dann anhand der Bedingung für den Link rangeschrieben werden. Die Bedingung müsste dann noch die Prüfung beinhalten, ob das target != ‘_blank’ ist oder nicht.

    Ich bin leider nicht so firm in den jQuery Selektoren, aber es müsste wie bisher verodert die beiden Bedingung zur URL besitzen und verundet die Bedingung mit dem Target.

    Viele Grü?e,
    Webwart

    Plugin Author PascalBajorat

    (@pascalbajorat)

    Hi Webwart,

    sieht von der grundlegende Idee doch schon mal super aus.
    Ich passe das mal für die Version 1.2.1 an.

    Wenn du magst, liste ich dich gerne in den Changelogs zu dem Update.
    Je nachdem wie du willst mit deinem WP Usernamen + Klarnamen oder nur WP User.

    Müsstest mir nur sagen wie es dir am liebsten ist, dann bekommst du dort noch einen Credit.

    Beste Grü?e
    Pascal

    Thread Starter webwart

    (@webwart)

    Hallo Pascal,

    Webwart ist prima, danke ??

    Ich habe gesehen, dass in meinem Codeschnipsel auf jeden Fall mindestens schon ein Fehler drin ist (ich konnte den leider immer noch nicht wirklich testen):

    Anstatt if ($target != '_blank') { muss es if ($linkTarget != '_blank') {hei?en.

    Ich hoffe, der Rest funktioniert wenigstens ??

    Ansonsten k?nnte man natürlich auch einfach in Abh?ngigkeit von dem Link-Target den Callback von function() { document.location = url; }; auf function() {window.open(url, ‘_blank’);` ?ndern. W?re ja auch eigentlich ne sch?ne Variante.

    Viele Grü?e, vielen Dank und einen sch?nen Abend noch!
    Webwart

    Plugin Author PascalBajorat

    (@pascalbajorat)

    Alles klar, kein Thema, danke. Ich hatte das ganze noch etwas angepasst. Die finale Version für die 1.2.1 sieht aktuell so aus und funktionierte in allen Tests bisher zuverl?ssig ??

    window.open bin ich unschlüssig, dass dürfte von vielen popup blockern blockiert werden. Aber die Variante unten funktioniert bisher sauber:

    var $trackOutboundLink_ga = function($url, $callback)
    {
        ga('send', 'event', 'outbound', 'click', $url, {
            'transport': 'beacon',
            'hitCallback': $callback
        });
    };
    
    var $trackOutboundLink_gtag = function($url, $callback)
    {
        gtag('event', 'click', {
            'event_category': 'outbound',
            'event_label': $url,
            'transport_type': 'beacon',
            'event_callback': $callback
        });
    };
    
    jQuery(document).ready(function($){
    
        if( gagTracker.link_tracking ) {
    
            $('a:not([href^="' + gagTracker.url + '"], [href^="#"])').on('click', function (e) {
    
                var $callback;
                var $url = $(this).attr('href');
    
                if( $(this).attr('target') !== '_blank' ) {
    
                    e.preventDefault();
    
                    $callback = function() {
                        window.location.href = $url;
                    };
    
                }
    
                if (gagTracker.mode == 'ua') {
                    $trackOutboundLink_ga($url, $callback);
                } else {
                    $trackOutboundLink_gtag($url, $callback);
                }
    
            });
    
        } // gagTracker.link_tracking
    
    });
    Plugin Author PascalBajorat

    (@pascalbajorat)

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘Ausgehendes Link tracking verhindert target=”_blank”’ is closed to new replies.