2009-10-06 16 views
0

J'essaie de trouver un moyen de mesurer combien de temps un utilisateur a été sur une page dans mon application ASP.NET. Je stocke le userid, le nom de page, le pageenteredtime et le pagelefttime dans une base de données. Chaque enregistrement a son propre identifiant unique, appelé featureuselogid. À l'heure actuelle, je peux suivre lorsqu'un utilisateur arrive sur la page avec la fonction page_load du côté serveur. Je stocke le userid, le nom de page et le temps de stockage.Depuis combien de temps un utilisateur est-il sur une page asp.net (analyse personnalisée)?

Ensuite, je suis coincé, et j'ai besoin de conseils dans la bonne direction. Je dois enregistrer l'heure à laquelle l'utilisateur quitte la page. Je sais en javascript qu'il existe une fonction window.onbeforeunload, qui couvrira la plupart des cas (arrêt du navigateur, liens etc).

Mais comment transmettre le featureuselogid au javascript? Si je peux le faire, je pense que je peux faire un appel webservice à partir du javascript et mettre à jour l'enregistrement avec le pagelefttime.

Est-ce que je vais dans la mauvaise direction?

Bravo à l'avance.

Répondre

1

Mettez simplement le featureuselogid dans un champ caché dans la page, avec un identifiant unique qui le rendra accessible à Javascript, ou définissez une variable javascript. Cela dit, je crois que vous allez être en mesure de détecter le plus efficacement Page_Load. Vous pouvez déterminer l'intervalle entre les pages en mesurant l'intervalle entre les événements Page_Load. Vous n'obtiendrez pas la fermeture du navigateur, mais l'OMI sachant quand l'utilisateur ferme le navigateur n'est pas tout à fait significatif.

0

Lorsque vous restituez la page en ASP.net, inclure une balise javascript qui attribue une variable à la valeur d'un script côté serveur:

<script language="javascript"> 
    var JS_featureuselogid = <%= featureuselogid %>; 
</script> 

plus tard dans votre code javascript, vous pouvez référencer la variable JS_featureuselogid et obtenez la valeur qui a été injectée pendant la construction de la page.

2

Vous devrez exécuter Javascript timer sur le client qui appelle périodiquement le serveur. Une fois que l'appel n'est pas enregistré à l'heure prévue, cela signifie que l'utilisateur est parti. Woopra le fait, et cela fonctionne de manière fiable. Par exemple, il arrive que des personnes aient une page chargée dans un navigateur en arrière-plan pendant des jours, et il n'y a pas d'autre moyen de détecter qu'elles sont encore connectées. Les utilisateurs sur les ordinateurs portables tirant le câble réseau, se retirant de la couverture d'une zone Wifi, etc. Il y a trop de scénarios où l'événement onbeforeunload n'atteindra plus un serveur.