Session.js
Gives information about the current session.
To use: include the file session.js, then access the visitor object. It uses the google javascript loader to get location data. For async loading, use the window.session_loaded callback.
Live API Demo | Example Usage Page
Configurable options are below.
Usage:
Include session.js
in the head or footer.
Download/Linking:
Recommended: Api v0.4 Uncompressed
Quick Example:
<script type='text/javascript'>
window.session = {
options: { gapi_location: true },
start: function(session){ // can also use window.session global.
if (session.first_session.visits > 1){
alert('Hi again from ' + session.location.address.city);
} else {
if (session.contains(session.current_session.referrer_info.host, 'facebook')){
alert('Hi there from '+ session.location.address.city +'. How about liking us on facebook?');
} else if (session.current_session.search.engine){
alert('Did you find what you were looking for from ' + session.current_session.search.engine + '?');
}
}
}
}
</script>
<script type='text/javascript' src="http://codejoust.github.com/session.js/session-0.4.js"></script>
Other Source Options:
Lock version to v0.4 (current stable): uncompressed, compressed.
Edge: uncompressed, compressed
If used in the footer (before the </body>
tag), you can use the window.session = {start: function(sess){ /* loaded session data */ }}
callback, before including the session.js. This is recommended when using session.js with location data.
window.session
:
API demo dump of {
"api_version": 0.4,
"locale": {
"country": "us",
"lang": "en"
},
"current_session": {
"visits": 1,
"start": 1326170811877,
"last_visit": 1326170811877,
"url": "http://codejoust.github.com/session.js/",
"path": "/session.js/",
"referrer": "",
"referrer_info": {
"host": "codejoust.github.com",
"path": "/session.js/",
"protocol": "http:",
"port": 80,
"search": "",
"query": {}
},
"search": {
"engine": null,
"query": null
}
},
"original_session": {
"visits": 29,
"start": 1326032481755,
"last_visit": 1326170811879,
"url": "http://codejoust.github.com/session.js/",
"path": "/session.js/",
"referrer": "",
"referrer_info": {
"host": "codejoust.github.com",
"path": "/session.js/",
"protocol": "http:",
"port": 80,
"search": "",
"query": {}
},
"search": {
"engine": null,
"query": null
}
},
"browser": {
"browser": "Chrome",
"version": 16,
"os": "Mac"
},
"plugins": {
"flash": true,
"silverlight": true,
"java": true,
"quicktime": true
},
"time": {
"tz_offset": -5,
"observes_dst": true
},
"device": {
"screen": {
"width": 1280,
"height": 1024
},
"viewport": {
"width": 1230,
"height": 952
},
"is_tablet": false,
"is_phone": false,
"is_mobile": false
},
"location": {
"latitude": 35.046,
"longitude": -85.31,
"address": {
"city": "Chattanooga",
"region": "TN",
"country": "USA",
"country_code": "US"
},
"source": "google"
}
}
ipinfodb.com location demo.
Synchronous information (everything but location not cached in a cookie), is available immediately after including session.js.
window.session = {
options: {
// Default Settings Example
// Use the HTML5 Geolocation API
// this ONLY returns lat & long, no city/address
use_html5_location: false,
// Attempts to use IPInfoDB if provided a valid key
// Get a key at http://ipinfodb.com/register.php
ipinfodb_key: false,
// Leaving true allows for fallback for both
// the HTML5 location and the IPInfoDB
gapi_location: true,
// Name of the location cookie (set blank to disable cookie)
// - WARNING: different providers use the same cookie
// - if switching providers, remember to use another cookie or provide checks for old cookies
location_cookie: "location",
// Location cookie expiration in hours
location_cookie_timeout: 5,
// Session expiration in days
session_timeout: 32,
// Session cookie name (set blank to disable cookie)
session_cookie: "first_session"
};
},
start: function(session){
// Session location loaded into window.session and first argument.
}
}