2017-07-27 1 views
1

Ich habe dieses Stück Javascript-Code tun meine Clickouts und es sollte die korrekte Click-Out-Tracking aktivieren. clickDestinations sind alle verschieden, und es gibt viele (domänenübergreifende).Diese Seite kann nicht erreicht werden (ERR_CONNECTION_CLOSED) JavaScript-Erkennung für window.open

var response = window.open(clickDestination, randomName); 
if (typeof response.focus === 'function') { 
     alert('tracking this click-out'); 
} 

Problem bei dieser Implementierung ist die clickDestination von Nutzern und ein Teil davon gegeben wurde, ist sehr alt, so gibt es keine Garantie, dass http oder https-Protokoll richtig eingestellt ist.

Wenn window.open mit dem falschen Protokoll aufgerufen wird, z. Mit https auf Seiten, auf denen https nicht unterstützt wird, bekomme ich die Seite "Diese Seite ist nicht erreichbar" (ERR_CONNECTION_CLOSED). Aber mein Tracker tracks sowieso seit var response ist ein window-objekt.

Irgendwelche Ideen wie kann ich den Fehler erkennen und nicht in diesem Fall verfolgen?

Antwort

1

Erste Idee gültig, wenn URL auf der gleichen Domäne ist (Same Origin Policy gilt auch hier):

var w = window.open(url); 

// if window opened successfully 
if (w) { 
    w.onload = function() { 
     alert('tracking this click-out'); 
    }; 
} 

Zweite Idee:

window.open gibt einen Verweis auf das neu erstellte Fenster. Wenn der Anruf fehlgeschlagen ist, wird stattdessen null angezeigt. Ref.

So im Fall schlägt die Verbindung fehl, da der Server an bestimmten URL nicht https oder http unterstützt null zurückgegeben werden, so dass Sie diese Informationen benutzen, können die Tracking-Code zu überspringen.

Beispiel (nicht getestet):

var response = window.open(clickDestination, randomName); 
// if destination cannot be open, skip tracking code 
if(!response){ 
    return; 
} 
if (typeof response.focus === 'function') { 
     alert('tracking this click-out'); 
} 
+0

Leider ist es immer noch ein Fensterobjekt, ich eine neue Registerkarte erhalten tun, der sagt zum Beispiel in Chrome „Diese Seite ist nicht erreichbar“. Vielen Dank für Ihre Zeit. – Mccandless5

+0

@ Mccandless5 Ich habe eine andere Idee hinzugefügt. Ich hoffe, dass es nützlich sein kann. – GibboK

+0

Diese Antwort erklärt alles, was in diesem Fall getan werden kann. – Mccandless5

Verwandte Themen