开发者

Try catch error in Javascript pass the error statment into Google Analytics

I have a Toogle function that uses to show/hide a div bloack to end users. However, some users said the IE generate an error when they clicks on this link. I am wondering whether I can use try catch statement in JavaScript to catach the error the users got and send to Googel Analytics.

If Yes, How I can do that. I have google analytcis set up in our site.

For instance, I have a div section call dynamic phone number.

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

When use开发者_高级运维rs click on Phone us link, i am able to track it in google.

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

In the back end, my toggle function works, like that

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

If i have to rewrite this function, i think it will look likes that:

 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 
       }

Any helps,

Cheers, Qing


first catch the error simply like:

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

then push it to Google

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


You can use the trackEvent as has been pointed here - but I believe the easiest way is to use trackPage, as you did for the other pages.

I use something like this:

try {
    ...

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

You can replace 'errors/' with whatever makes sense to you ('virtual-errors-list/' for example).

In addition, consider adding the error tracking to window.onerror handler:

window.onerror = function(errorMsg, url, lineNumber){
        pageTracker._trackPageview('/errors/'+errorMsg);
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜