Clone wiki

BibSonomy / development / modules / clicklog / Clicklog


ClickLog is an add-on for BibSonomy to detect and log user interaction on every BibSonomy webpage. Every time a user clicks on an anchor within a page, Clicklog recognises it and computes different values which it submits to a log server. First, the clicked anchor element itself will be parsed. The containing text element attributes are used to get values like anchor title, hyperreference and some id and class values to determine the area of this clicked link. Anchor tag in different areas like navigation, tag cloud, bookmark posts, and publication posts have different class definitions. Next, the position of the anchor in a list of anchors will be determined for later analysis. Next to this, some other meta data will be logged. Date, current webpage location, useragent of webclient, username, sessionid, complete HTTP request header and at least the mouseposition while clicking the anchor in two xy-value-pairs. Mouse position in client window and position in document area, which are different, if user scrolls down in the document.

To determine every click of a user, a function must be hooked into the browsers event handling. This clicklog function is called at the mouse click event and computes then all for logging necessary informations described above. All assembled data will be sent with a synchronous HTTP request to a logging server. The server sends the http response immediatly after getting data and than analyses the received data from the client. This logging server is written in Java and can be included in BibSonmy or it can work as a stand alone server. While the Javascript client only collects data, the server works on the received data and stores the preprocessed data to the database.

This server only stores data and does not analyse or aggregate data for evaluation. This task has to be done later on. In spring of 2009, approximately 70000 entries, this means stored clicks, with 115 million bytes are stored in the database per month.

Purpose of this module

  • analyse user behaviour (for GUI optimization)
    • Which groups of links are used?
    • Do users use recommended tags?
    • Do users click on tagcloud links?
    • Do specific user or tags clicked more often than others? (using the post or the tag cloud)
    • Are relations used and clicked?
  • Are links clicked more often when they are in the visual range of the user?
  • Do users use (new) features?
  • Do users use BibSonomy to find new links?


Data Description

id: 0
logdate: null
dompath: A/LI/UL#tagbox/LI/UL#sidebar/DIV#sidebarroundcorner/DIV#main/BODY/HTML/
dompath2: A/LI.tagtiny/UL#tagbox.tagcloud/LI/UL#sidebar/DIV#sidebarroundcorner/DIV#main/BODY/HTML/
type: tagbox
pageurl: http://localhost:8080/user/bugsbunny
acontent: kassel
anumberofposts: 19
ahref: /user/bugsbunny/kassel
useragent: Mozilla/5.0 (X11; U; Linux i686; de; rv: Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7
username: bugsbunny
sessionid: 8B2A945262D7B37404F95AC5D670EA80
host: localhost:8080
completeheader: host: localhost:8080
user-agent: Mozilla/5.0 (X11; U; Linux i686; de; rv: Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
accept-encoding: gzip,deflate
accept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
keep-alive: 300
connection: keep-alive
content-type: application/x-www-form-urlencoded; charset=UTF-8
referer: http://localhost:8080/user/bugsbunny
content-length: 414
cookie: JSESSIONID=8B2A945262D7B37404F95AC5D670EA80; _currUser=bugsbunny%207a026b72d845574a2d7950501a934960; _lPost=7561824122
pragma: no-cache
cache-control: no-cache

xforwardedfor: null
windowsize: 1440 647
mousedocumentpos: 1215 522
mouseclientpos: 1215 408
listpos: 0
abmown: 0
referer: http://localhost:8080/
  • logddate: Date of click
  • dompath: DOM path with values of id attributes: A/LI/UL#tagbox/LI/UL#sidebar/DIV#sidebarroundcorner/DIV#main/BODY/HTML/
  • dompath2: DOM path with values of id and class attributes: A/LI.tagtiny/UL#tagbox.tagcloud/LI/UL#sidebar/DIV#sidebarroundcorner/DIV#main/BODY/HTML/
  • type: which area of page a user clicked. Generated from DOM path
  • pageurl: Address of Webpage:
  • acontent: Value of content area of an anchor element (displayd text of an anchor element)
  • anumberofposts in tag cloud area this is the number, how often this tag was used before in different posts
  • ahref: value of href attribute of cliked a element
  • useragent: browser useragent
  • username: username of logged in user
  • sessionid: session id of logged in user
  • host: header field
  • completeheader of http connection
  • xforwardedfor header field
  • windowsize x,y values of size of client window with viewing area inside
  • mousedocumentpos: x,y values of mouse position in client document (document area)
  • mouseclientpos: x,y values of mouse position in client browser (viewing area)
  • listpos: position of clicked anchor (tag) in displayed list of anchors (tags)
  • abmown: post is users own post, has class bmown
  • referer header field

How it works


  • Javascript
  • every click event will be analysed, if clicked element was an anchor, only these will be logged
  • collect data
    • use attributes and content of anchor element
    • use informations about current page
    • use informations about current mouse and windows positions
    • compute DOM path to clicked element
  • send collected data asynchronous to server in background


  • Java
  • retrieves data from client
  • gets additional data from bibsonomy
    • http-header of request
    • cookie data
  • compute and store data for later use
    • computes abmown and type
    • prepare data for string it into database
    • store data into database