Попробуйте отловить ошибку в Javascript и пропустите ошибку в Google Analytics - PullRequest
0 голосов
/ 10 декабря 2010

У меня есть функция Toogle, которая использует, чтобы показать / скрыть блок div для конечных пользователей. Тем не менее, некоторые пользователи говорят, что IE генерирует ошибку при нажатии на эту ссылку. Мне интересно, могу ли я использовать оператор try catch в JavaScript, чтобы отследить ошибку, которую пользователи получили, и отправить в Googel Analytics.

Если да, то как я могу это сделать. Я настроил Google Analytcis на нашем сайте.

Например, у меня есть динамический номер телефона для вызова в разделе div.

<div id = "cs_DynamicForm">
  "Phone number..."
  <div>

Когда пользователи нажимают на ссылку Телефон, я могу отследить ее в Google.

   <a onclick="javascript: pageTracker._trackPageview('/Contact/UK/phone');" id="phoneNumberToggle" class="more-info-link" href=" javascript:void(0);">Phone us</a>

На заднем плане моя функция переключения работает вот так

_dynamicPhoneNumber: function(type, arg)
    {
    var phoneNumber = document.getElementById("cs_DynamicForm");
    var vis =phoneNumber.style;
    //alert(vis);
    if(vis.display==''&&phoneNumber.offsetWidth!=undefined&&phoneNumber.offsetHeight!=undefined)
        vis.display = (phoneNumber.offsetWidth!=0&&phoneNumber.offsetHeight!=0)?'block':'none';


  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
    }

Если мне придется переписать эту функцию, я думаю, это будет выглядеть так:

 try{
        var phoneNumber = document.getElementById("cs_DynamicForm");
        var vis =phoneNumber.style;
        //alert(vis);
        if(vis.display==''&&phoneNumber.offsetWidth!=undefined&&phoneNumber.offsetHeight!=undefined)
        vis.display = (phoneNumber.offsetWidth!=0&&phoneNumber.offsetHeight!=0)?'block':'none';
        vis.display = (vis.display==''||vis.display=='block')?'none':'block';
       }
       catch (e)
       {
         var errorMsg=e.message; 
        if (typeof (e.number) != "undefined") {
        document.write ("<br />");
        document.write ("The error code: <b>" + e.number + "</b>");
        }
        if (typeof (e.lineNumber) != "undefined") {
        document.write ("<br />");
        document.write ("The error occurred at line: <b>" + e.lineNumber + "</b>");
        }
        //And send the errorMsg to google analytics. how I should do that 
       }

Любая помощь,

Ура, Цин

Ответы [ 2 ]

0 голосов
/ 11 декабря 2010

Вы можете использовать trackEvent, как было указано здесь, - но я считаю, что проще всего использовать trackPage, как вы это делали для других страниц.

Я использую что-то вроде этого:

try {
    ...

} catch (e)
{
    pageTracker._trackPageview('/errors/'+e.toString());
}

Вы можете заменить «ошибки /» тем, что имеет для вас смысл (например, «список виртуальных ошибок»).

Кроме того, рассмотрите возможность добавления отслеживания ошибок в обработчик window.onerror :

window.onerror = function(errorMsg, url, lineNumber){
        pageTracker._trackPageview('/errors/'+errorMsg);
    }
0 голосов
/ 10 декабря 2010

сначала поймать ошибку просто как:

try {
 tes.ting = 123;
}
catch(e) {
 errors.push(e);
}

затем отправьте его в Google

_gaq.push(['_trackEvent', 'Testing', 'Error', errors.toString()]);
...