Как отслеживать (Google Analytics) отдельные загрузки файлов, когда я использую тег <asp: hyperlink>? - PullRequest
0 голосов
/ 19 ноября 2010

Я знаком с отслеживанием загрузок файлов, используя этот метод:

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

Но теперь мне нужно отследить загрузку файла, используя этот код:

<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>

Из того, что я нашел с помощьюonClick="javascript: pageTracker._trackPageview('/downloads/map');не будет работать.Я также читал, что onClick даже не работает с гиперссылкой asp :. Я не знаю ASP, какой самый простой способ отслеживать загрузку этого файла?Я пытался использовать asp: linkbutton, но у меня не было успеха (хотя я мог неправильно его кодировать). EDIT: Еще один способ объяснить мою проблему:Я наткнулся на эту ссылку asp, которая мне нужна для отслеживания загрузки файла, но я не знаю asp или как отредактировать / переписать оператор, чтобы сделать это.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2010

Вы пробовали использовать OnClientClick?OnClick выполняет на стороне сервера, где OnClientClick работает на стороне клиента, прежде чем управление передается на сервер.

Попробуйте:

<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()" />

Или, если вы хотите обрабатывать отслеживание страниц на стороне сервера,Вы можете попробовать что-то вроде этого:

<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');
}

Когда я первоначально спросил, как выглядит ваш код asp: LinkButton, я был уверен, что он похож на ваш код asp: HyperLink, который вы опубликовали, но asp:LinkButton не имеет атрибута для «NavigateUrl».Дайте мне знать, если это больше похоже на то, что вы пытаетесь сделать.

0 голосов
/ 08 августа 2012

Вы всегда можете переопределить метод OnLoad () и установить атрибут onClick таким образом. Например:

protected override void OnLoad(EventArgs e)
{
     base.OnLoad(e)
     this.Attributes["onClick"] = "javascript: pageTracker._trackPageview('/downloads/map'); ";
}
0 голосов
/ 19 ноября 2010

Вместо гиперссылки asp: вы можете рассмотреть возможность использования другого элемента управления asp, который поддерживает атрибут OnClientClick.

Другой вариант - использовать JavaScript (используйте вашу любимую библиотеку, например, jQuery), чтобы прикрепить код отслеживания событий Google Analytics к вашему asp: hyperlink:

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

Вы можете сделать что-нибудьнапример, в блоке document.ready ().

ОБНОВЛЕНИЕ

Вы можете использовать asp: linkbutton, добавляя javascript в OnClientClick, чтобы запретить публикацию действий нажатия кнопкина сервер.

<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>

Обратите внимание, что OnClientClick вызывает функцию отслеживания событий Google, затем изменяет местоположение документа и в качестве меры безопасности возвращает false, чтобы предотвратить публикацию на сервере.

Iне назвал бы это лучшей практикой и лично решил бы сделать это по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...