2012-04-06 8 views
3

Zusammenfassung: 1. Sie müssen ein neues Fenster öffnen, um eine Umfrage von einem Drittanbieter anzuzeigen.
2. Kann nicht JavaScript verwenden, um das Fenster zu öffnen (zur Zeit target = „_ blank“ mit. 3. JavaScript Klicks verfolgen verwenden muß (derzeit Onclick) verwenden. 4. ursprüngliche Fenster müssen nicht ihren Inhalt auf Klick ändern.Neues Fenster wird nicht geöffnet, wenn target = "_ blank" mit onclick verwendet wird

ich habe eine JSP, die einen dritten Umfrage in einem neuen Fenster zu starten versucht Ursprünglich wurde der Code das neue Fenster wie folgt starten:..

<a id="customer_survey_button" href="#" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');openChildWindow('http://www.blah.com/f.asp?etcetera','TAKE SURVEY');return false;" class="genbut">TAKE SURVEY</a> 

Es in FF gearbeitet, aber nicht Chrome Es verursacht Ein Sicherheitsproblem mit Chrome: So etwas wie ein 'unsicherer JavaScript-Versuch, auf einen Frame (neues Fenster) zuzugreifen, der eine Domain lädt, während sie ursprünglich ist n ist eine andere Domäne. Meine Lösung war, das Fenster mit HTML zu öffnen, wie folgt aus:

<a id="customer_survey_button" href="http://www.blah.com/f.asp?etcetera" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');return false;" class="genbut">Take Survey</a> 

Das Problem ist, dass nicht in einem neuen Fenster zu öffnen. Während des Debugging habe ich den Onclick aus dem obigen Code entfernt und er öffnet sich in einem neuen Fenster. Ich bin mir nicht sicher, ob es etwas falsch in dem JS-Code ist ...

<script type="text/javascript"> 
<!-- 
var pageTracker = _gat._getTracker("<%=googleTrackerId%>"); 
pageTracker._initData(); 
pageTracker._trackPageview(); 

function recordOutboundLink(link, category, action) { 
    try {  
    pageTracker._trackEvent(category, action); 
    setTimeout('document.location = "' + link.href + '"', 100) 
    }catch(err){} 
} 
// --> 
</script> 

... oder wenn es nur eine Frage des Ziel mit und Onclick in dem gleichen Anker-Tag. Irgendwelche Gedanken?

Ich recherchierte anderswo, und auf Stack Overflow fand ich die folgenden Ergebnisse, aber keine schien diese Situation zu adressieren. Zum Beispiel (s):

Das half in einer Hinsicht, weil ich die Entfernung von "return false" testen konnte. Das hatte das gleiche Ergebnis wie für "user1223427" - es hat dieselbe Seite in zwei verschiedenen Fenstern dargestellt. Es hat nicht geholfen, weil ich eine Nicht-JavaScript-Möglichkeit brauche, die Ziel-URL zu öffnen (wegen der erwähnten Sicherheitsprobleme). OnClick for google analytics and target _blank. The link does not work?

Dies hilft nicht, denn ich bin mit JQuery nicht und ich verstehe nicht, die Verbindung zwischen der JQuery-Lösung und meiner Situation select onclick that contains _blank

Dies gilt nur für immer-Tracking-Code zu arbeiten Probleme mit einem neuen Fenster: Google Analytics - Download clicks tracking

Ich dachte, das würde ein gutes Ergebnis haben, aber es ist eine JS-Lösung. Bug in external link tracking when opening the link in a new window in Google Analytics?

Antwort

4

Die Funktion recordOutboundLink öffnet den Link.

//This is changing the URL to the href of the link you clicked  
setTimeout('document.location = "' + link.href + '"', 100) 

Ihr zweites Beispiel gibt false vom onclick-Ereignis zurück. Dies verhindert, dass das Anker-Tag sein normales Verhalten ausführt.

Wenn Sie die Zeile setTimeout auskommentieren und return false aus dem onclick entfernen, sollte sich der Link wie gewünscht verhalten.

Sie könnten auch die setTimeout-Funktion ändern window.open statt document.location

+0

kommentiert und Entfernen das return false gearbeitet zu nennen! Jetzt muss ich sehen, welchen Einfluss das Auszählen von setTimeout haben wird (diese Funktion wird überall aufgerufen, daher muss ich möglicherweise eine spezielle für diese Umfrage-Schaltfläche erstellen). – ckpop

+0

Ich erstellte auch eine separate Funktion (recordOutboundLinkOpenWindow) und änderte setTimeout, um document.location durch window.open zu ersetzen, anstatt die gesamte Zeile zu kommentieren. Das funktioniert perfekt. DANKE! Ich wünschte, ich hätte 15 Ruf, also könnte ich deine Antwort auf die Spitze treiben! – ckpop

+0

Kein Problem. Froh, dass ich Helfen kann. –

Verwandte Themen