2010-11-19 3 views
0

Ich bin mit Tracking-Datei-Downloads mit dieser Methode vertraut:
Wie kann ich einzelne Downloads von Dateien verfolgen (Google Analytics), wenn ich das <asp: hyperlink> -Tag verwende?

<a href="http://www.example.com/files/map.pdf" onClick="javascript: pageTracker._trackPageview('/downloads/map'); "> 

Aber jetzt muss ich diesen Code eine Datei herunterladen Track mit:

<asp:HyperLink ID="HyperLink3" runat="server" 
    NavigateUrl="~/Protected/Download.aspx?pfile=logos.zip" 
    ForeColor="Black" style="text-decoration:none"><b>Download<img src="../external_files/images/downloadzip.gif" 
    style="width: 40px; height: 40px" border="0" /></b> 
</asp:HyperLink> 

Von dem, was ich fand die
onClick="javascript: pageTracker._trackPageview('/downloads/map'); mit
wird nicht funktionieren. Ich lese auch, dass onClick nicht einmal mit asp funktioniert: Hyperlink.
Ich weiß nicht, ASP, was ist der einfachste Weg für mich, den Download dieser Datei zu verfolgen? Ich habe versucht, einen asp: linkbutton zu verwenden, aber ich hatte keinen Erfolg (ich könnte es falsch kodieren).

EDIT:
Ein anderer Weg, um mein Problem zu erklären ist:
Ich kam in dieser asp Verbindung, die ich brauche die Datei herunterladen zu verfolgen, aber ich weiß nicht, asp oder wie das bearbeiten/umschreiben Anweisung, dies zu tun.

+0

nicht marker antwort? – Kiquenet

Antwort

0

Anstelle von asp: hyperlink können Sie ein anderes asp-Steuerelement verwenden, das das OnClientClick-Attribut unterstützt.

wäre eine andere Wahl JavaScript verwenden (Ihre Lieblings-Bibliothek verwenden, das heißt, jQuery), um die Google Analytics Ereignis-Tracking-Code in Ihre asp anbringt: Hyperlink:

jQuery("#GeneratedIDForHyperLink3").click(
    function() { 
     try { 
      pageTracker._trackEvent(categoryVal, actionVal, labelVal); 
     } catch(err) {} 
    }); 

Sie könnten etwas tun, wie dies in einem document.ready() Block.

UPDATE

Sie eine asp verwenden können: Linkbutton, javascript zum OnClientClick Hinzufügen der Tasten auf den Server Aktion klicken Entsendung zu verhindern.

<asp:LinkButton ID="HyperLink3" runat="server" ForeColor="Black" Style="text-decoration: none" OnClientClick="javascript: pageTracker._trackPageview('/downloads/map');document.location = '/Protected/Download.aspx?pfile=logos.zip';return false;"> 
<b>Download<img alt="" src="../external_files/images/downloadzip.gif" style="width: 40px; height: 40px" border="0" /></b> 
</asp:LinkButton> 

Beachten Sie, dass OnClientClick ruft Ihre Event-Funktion Google Spur, ändert sich dann das Dokument Standort und als Sicherheit, gibt false zurück an den Server Posting zu verhindern.

Ich würde dies nicht eine Best Practice nennen und würde persönlich darüber nachdenken, es anders zu machen.

+0

jQuery ist auch ein wenig über mir. Wie könnte ich den Asp: Hyperlink mit dem OnClientClick und dem GA-Code umschreiben? – john

+0

Gibt es Gründe, dass Sie den Asp: Hyperlink verwenden müssen? Gibt es einen Grund dafür, dass Sie nicht einfach den direkten HTML-Code verwenden können, mit dem Sie vertraut sind? Der asp: Hyperlink unterstützt OnClientClick nicht direkt, aber asp: imagebutton und asp: linkbutton tun dies. Diese werden leider als HTML-Steuerelemente (Buttons) rendern, die letztendlich auf den Server posten werden. Sie können das mit Javascript mildern. Ich werde meine Antwort bearbeiten und ein Beispiel hinzufügen. –

0

Haben Sie versucht, OnClientClick zu verwenden? OnClick führt die Serverseite aus, wobei OnClientClick auf der Clientseite funktioniert, bevor die Kontrolle an den Server übergeben wird.

Versuchen:

<script type="text/javascript"> 
    $(function() { 
     function Foo() { 
      javascript: window.open("~/Protected/Download.aspx?pfile=logos.zip"); 
     } 
     $("#MyLinkButton").click(function() { 
      javascript: pageTracker._trackPageview('/downloads/map'); 
     }); 
    }); 
</script> 

<asp:LinkButton ID="MyLinkButton" runat="server" 
       Text="ClickMe" OnClientClick="Foo()" /> 

Oder wenn Sie die Seite Tracking auf der Serverseite zu handhaben wollen, könnten Sie versuchen, etwas like-a-so:

<script type="text/javascript"> 
    $(function() { 
     function Foo() { 
      javascript: window.open("~/Protected/Download.aspx?pfile=logos.zip"); 
     } 
    }); 
</script> 

<asp:LinkButton ID="MyLinkButton" runat="server" 
       Text="ClickMe" OnClientClick="Foo()" OnClick="MyLinkButton_Click" /> 

// Server side code 
public void MyLinkButton_Click (object sender, EventArgs e) 
{ 
    pageTracker._trackPageview('/downloads/map'); 
} 

Als ich ursprünglich gefragt, was Ihr asp: LinkButton-Code sah aus, ich war mir sicher, dass es ähnlich zu Ihrem Asp sah: HyperLink-Code, den Sie gepostet, aber asp: LinkButton hat kein Attribut für 'NavigateUrl'. Lassen Sie mich wissen, ob dies eher dem entspricht, was Sie vorhaben.

0

Sie können die OnLoad() -Methode immer überschreiben und das onClick-Attribut auf diese Weise festlegen. Zum Beispiel:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e) 
    this.Attributes["onClick"] = "javascript: pageTracker._trackPageview('/downloads/map'); "; 
}