Category Archives: JavaScript

Track Silverlight versions via Google Analytics

Flash bliver brugt mange steder, og Analytics tracker hvilken version de besøgene har. Men Silverlight bliver ikke tracket, for at tracke om dine besøgene har Silverlight kan du bruge Custom Variables. Du kan sætte op til 5, og jeg her vise hvordan du kan sætte Analytics op til af tracke Silverlight.

Første skal du have noget JavaScript som finder ud af om Silverlight er installeret, og herefter hvilken version. Koden gemmes som SilverlightVersion.js.

Tak til Gergely Orosz – http://www.gregdoesit.com, for JavaScript koden. 🙂

///////////////////////////////
// SilverlightVersion.js
// Created by Gergely Orosz
// http://www.gregdoesit.com
///////////////////////////////
function GetSilverlightVersion(){
	var parts = Array("ver-major", "ver-minor", "ver-build", "ver-revision");

	var nav = navigator.plugins["Silverlight Plug-In"];
	var versionStr = "";
	// Non IE-browsers
	if (nav) {
		versionStr = nav.description;
	} 
	// IE-browsers
	else {
		if(SilverlightIsInstalledOnIE)
			versionStr = GetSilverlightVersionOnIE();
		else 
			versionStr = -1;
	}
	return versionStr;
}

function SilverlightIsInstalledOnIE(version)
{
	if(version == null)
		version = "1.0";
	var AgControl = new ActiveXObject("AgControl.AgControl");    
	if(AgControl == null)
		return false;
	else
		return AgControl.isVersionSupported(version);
}

function GetSilverlightVersionOnIE()
{
	var currVersion = Array(1,0,0,0);
	for(var i=0;i<currVersion.length;i++){
		currVersion[i] = FindSupportedMaxVersionOnIE(currVersion, i,0,10000000);
	}
	return GetVersionString(currVersion);
}

function GetVersionString(versionArr,currVersion,index)
{
	if(index == null)
		index = -1;
	var versionStr = "";
	for(var i=0;i<versionArr.length;i++){
		if(i>0)
			versionStr += ".";
		if(i==index)
			versionStr +=currVersion;
		else
			versionStr += versionArr[i];
	}
	return versionStr;
}

function FindSupportedMaxVersionOnIE(versionArr, index,bottom,top)
{
	if(bottom >= top){
		return bottom;
	}
	var currVersion = bottom;
	var prevVersion = currVersion;
	var step = 1;
	while(currVersion<top)	{
		if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,currVersion,index)))	{
			prevVersion = currVersion;
			currVersion += step;
			step *= 2;
		}
		else	
			return FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,currVersion-1)
	}
	if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,top,index)))
		return top;
	else
		return FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,top-1)
}

Når den er gemt, ligges denne JavaScript kode lige før din Analytics kode.

var slv = 0;
var slVersion = GetSilverlightVersion();
if(slVersion != -1)
   slv = slVersion;
else
   slv = "Not supported";

Din Analytics kode opdateres, så der sættes en Custom Variable. Denne bliver sat så den er nøgle 1.

_gaq.push(['_setCustomVar', 1, 'SilverlightVersion', slv, 2]);

Herefter vil Analytics tracke om dine besøgene har Silverlight installeret og hvilken version. Der kan gå op til en 24 timer, før Analytics har registeret dine nye variabel.

Fuld Analytics kode.

var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
  _gaq.push(['_setCustomVar', 1, 'SilverlightVersion', slv, 2]);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

Så skulle Analytics tracke hvilken version af Silverlight dine besøgene har. Jeg bruger det selv her på siden, da jeg koder mest i C#, ikke så meget Flash/Flex/ActionScript.

Info.

Her er lidt ekstra links omkring tracking med Analytics.

https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables?hl=da

https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiBasicConfiguration?hl=da