- Posts: 12
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Log Screen Size
- alexpatton
- Topic Author
- Offline
- New Member
Less
More
8 years 6 months ago #127799
by alexpatton
Log Screen Size was created by alexpatton
Is there a way to log screen size for a respondent?
The topic has been locked.
- holch
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11683
- Thank you received: 2748
8 years 6 months ago - 8 years 6 months ago #127805
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
Replied by holch on topic Log Screen Size
This is possible via Javascript. You should first make sure that you really want the screen size and not actually the view port. Once that is clear, here an example (including both options and a little bit more of information you might want to record or delete.
You need to insert this into the question text of a large text question. The last line is currently commented out. Once you feel everything is running correctly, you can hide this question by removing the // from the line under "// hide the question". See also attached example.
Code:
<script type="text/javascript"> var SID = '{SID}'; var GID = '{GID}'; var QID = '{QID}'; var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10); var nameOffset,verOffset,ix; // In Opera, the true version is after "Opera" or after "Version" if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5); } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) { browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion,10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } var vpw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0) // returns the viewport width var vph = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) // returns the viewport height var scrw = screen.width; // returns height of browser viewport var scrh = screen.height; // returns width of browser viewport $(document).ready(function() { $('#answer'+SID+'X'+GID+'X'+QID).val('' +'Browser name = '+browserName+'\n' +'Full version = '+fullVersion+'\n' +'Major version = '+majorVersion+'\n' +'navigator.appName = '+navigator.appName+'\n' +'navigator.userAgent = '+navigator.userAgent+'\n' +'viewport-width = '+vpw+'\n' +'viewport-height = '+vph+'\n' +'screen-width = '+scrw+'\n' +'screen-height = '+scrh+'\n'); // hide the question //$('#question'+QID).hide(); }); </script>
You need to insert this into the question text of a large text question. The last line is currently commented out. Once you feel everything is running correctly, you can hide this question by removing the // from the line under "// hide the question". See also attached example.
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
Attachments:
Last edit: 8 years 6 months ago by holch.
The topic has been locked.
- alexpatton
- Topic Author
- Offline
- New Member
Less
More
- Posts: 12
- Thank you received: 0
8 years 5 months ago #128620
by alexpatton
Replied by alexpatton on topic Log Screen Size
Just wanted to return and THANK YOU! Worked perfectly!
I appreciate your willingness to help!
I appreciate your willingness to help!
The topic has been locked.
- jelo
- Offline
- Platinum Member
Less
More
- Posts: 5033
- Thank you received: 1257
8 years 5 months ago #128647
by jelo
When using these informations for debugging problems with browsers you cannot get any info about Browsers which won't make it to the second page/group. When the user is having problems on the first page we won't be able to record that information.
The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users
Replied by jelo on topic Log Screen Size
It would be better to haven an option to record browser data via LS itself too (screensize won't work without Javascript, but more basic information are available).holch wrote: This is possible via Javascript.
When using these informations for debugging problems with browsers you cannot get any info about Browsers which won't make it to the second page/group. When the user is having problems on the first page we won't be able to record that information.
The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13684
- Thank you received: 2497
8 years 5 months ago #128708
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Log Screen Size
git.framasoft.org/SondagePro-LimeSurvey-...in/findUserAgentInfojelo wrote:
It would be better to haven an option to record browser data via LS itself too (screensize won't work without Javascript, but more basic information are available).holch wrote: This is possible via Javascript.
When using these informations for debugging problems with browsers you cannot get any info about Browsers which won't make it to the second page/group. When the user is having problems on the first page we won't be able to record that information.
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
- rasheed
- Offline
- New Member
Less
More
- Posts: 18
- Thank you received: 0
8 years 2 months ago #131089
by rasheed
Replied by rasheed on topic Log Screen Size
As am not a programmer, can someone pleas help me to have the sys info in the following link:
jsfiddle.net/ChristianL/AVyND/
instead of those suggested earlier ?
Thank you very much in advance !
instead of those suggested earlier ?
Thank you very much in advance !
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10116
- Thank you received: 3597
8 years 2 months ago #131125
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Log Screen Size
Wasn't this answered here -
www.limesurvey.org/forum/can-i-do-this-w...ates?start=15#131082
?
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- rasheed
- Offline
- New Member
Less
More
- Posts: 18
- Thank you received: 0
8 years 2 months ago #131127
by rasheed
Replied by rasheed on topic Log Screen Size
Yes, Holch mentioned this post and asked me to find out how to reference the OS via Javascript..
I found it the link below but since am not a developer, i don't know how show this info (content of the alert message) in the text field in my survey question.
jsfiddle.net/ChristianL/AVyND/
Thank you !
I found it the link below but since am not a developer, i don't know how show this info (content of the alert message) in the text field in my survey question.
jsfiddle.net/ChristianL/AVyND/
Thank you !
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10116
- Thank you received: 3597
8 years 2 months ago #131128
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Log Screen Size
I think the link Holch provided tells exactly how to do that and even includes a sample question.
www.limesurvey.org/forum/can-i-do-this-w...g-screen-size#127805
www.limesurvey.org/forum/can-i-do-this-w...g-screen-size#127805
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- rasheed
- Offline
- New Member
Less
More
- Posts: 18
- Thank you received: 0
8 years 2 months ago #131130
by rasheed
Replied by rasheed on topic Log Screen Size
Yes, but his script doesn't show OS version, flash,..
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10116
- Thank you received: 3597
8 years 2 months ago - 8 years 2 months ago #131132
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Log Screen Size
Here is your jsfiddle script incorporated into Holch's answer (I have left the question un-hidden for testing):
Sample survey attached:
Code:
<script type="text/javascript" charset="utf-8"> /** * JavaScript Client Detection * (C) viazenetti GmbH (Christian Ludwig) */ (function (window) { { var unknown = '-'; // screen var screenSize = ''; if (screen.width) { width = (screen.width) ? screen.width : ''; height = (screen.height) ? screen.height : ''; screenSize += '' + width + " x " + height; } // browser var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browser = navigator.appName; var version = '' + parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion, 10); var nameOffset, verOffset, ix; // Opera if ((verOffset = nAgt.indexOf('Opera')) != -1) { browser = 'Opera'; version = nAgt.substring(verOffset + 6); if ((verOffset = nAgt.indexOf('Version')) != -1) { version = nAgt.substring(verOffset + 8); } } // Opera Next if ((verOffset = nAgt.indexOf('OPR')) != -1) { browser = 'Opera'; version = nAgt.substring(verOffset + 4); } // MSIE else if ((verOffset = nAgt.indexOf('MSIE')) != -1) { browser = 'Microsoft Internet Explorer'; version = nAgt.substring(verOffset + 5); } // Chrome else if ((verOffset = nAgt.indexOf('Chrome')) != -1) { browser = 'Chrome'; version = nAgt.substring(verOffset + 7); } // Safari else if ((verOffset = nAgt.indexOf('Safari')) != -1) { browser = 'Safari'; version = nAgt.substring(verOffset + 7); if ((verOffset = nAgt.indexOf('Version')) != -1) { version = nAgt.substring(verOffset + 8); } } // Firefox else if ((verOffset = nAgt.indexOf('Firefox')) != -1) { browser = 'Firefox'; version = nAgt.substring(verOffset + 8); } // MSIE 11+ else if (nAgt.indexOf('Trident/') != -1) { browser = 'Microsoft Internet Explorer'; version = nAgt.substring(nAgt.indexOf('rv:') + 3); } // Other browsers else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) { browser = nAgt.substring(nameOffset, verOffset); version = nAgt.substring(verOffset + 1); if (browser.toLowerCase() == browser.toUpperCase()) { browser = navigator.appName; } } // trim the version string if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix); majorVersion = parseInt('' + version, 10); if (isNaN(majorVersion)) { version = '' + parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion, 10); } // mobile version var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer); // cookie var cookieEnabled = (navigator.cookieEnabled) ? true : false; if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) { document.cookie = 'testcookie'; cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false; } // system var os = unknown; var clientStrings = [ { s:'Windows 10', r:/(Windows 10.0|Windows NT 10.0)/ }, { s:'Windows 8.1', r:/(Windows 8.1|Windows NT 6.3)/ }, { s:'Windows 8', r:/(Windows 8|Windows NT 6.2)/ }, { s:'Windows 7', r:/(Windows 7|Windows NT 6.1)/ }, { s:'Windows Vista', r:/Windows NT 6.0/ }, { s:'Windows Server 2003', r:/Windows NT 5.2/ }, { s:'Windows XP', r:/(Windows NT 5.1|Windows XP)/ }, { s:'Windows 2000', r:/(Windows NT 5.0|Windows 2000)/ }, { s:'Windows ME', r:/(Win 9x 4.90|Windows ME)/ }, { s:'Windows 98', r:/(Windows 98|Win98)/ }, { s:'Windows 95', r:/(Windows 95|Win95|Windows_95)/ }, { s:'Windows NT 4.0', r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ }, { s:'Windows CE', r:/Windows CE/ }, { s:'Windows 3.11', r:/Win16/ }, { s:'Android', r:/Android/ }, { s:'Open BSD', r:/OpenBSD/ }, { s:'Sun OS', r:/SunOS/ }, { s:'Linux', r:/(Linux|X11)/ }, { s:'iOS', r:/(iPhone|iPad|iPod)/ }, { s:'Mac OS X', r:/Mac OS X/ }, { s:'Mac OS', r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, { s:'QNX', r:/QNX/ }, { s:'UNIX', r:/UNIX/ }, { s:'BeOS', r:/BeOS/ }, { s:'OS/2', r:/OS\/2/ }, { s:'Search Bot', r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } ]; for (var id in clientStrings) { var cs = clientStrings[id]; if (cs.r.test(nAgt)) { os = cs.s; break; } } var osVersion = unknown; if (/Windows/.test(os)) { osVersion = /Windows (.*)/.exec(os)[1]; os = 'Windows'; } switch (os) { case 'Mac OS X': osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1]; break; case 'Android': osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1]; break; case 'iOS': osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0); break; } // flash (you'll need to include swfobject) /* script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" */ var flashVersion = 'no check'; if (typeof swfobject != 'undefined') { var fv = swfobject.getFlashPlayerVersion(); if (fv.major > 0) { flashVersion = fv.major + '.' + fv.minor + ' r' + fv.release; } else { flashVersion = unknown; } } } window.jscd = { screen: screenSize, browser: browser, browserVersion: version, browserMajorVersion: majorVersion, mobile: mobile, os: os, osVersion: osVersion, cookies: cookieEnabled, flashVersion: flashVersion }; }(this)); $(document).ready(function() { // Hide this question (remove double slash below to hide) //$('#question{QID}').hide(); // Load the question $('#question{QID} textarea').val( 'OS: ' + jscd.os +' '+ jscd.osVersion + '\n' + 'Browser: ' + jscd.browser +' '+ jscd.browserMajorVersion + ' (' + jscd.browserVersion + ')\n' + 'Mobile: ' + jscd.mobile + '\n' + 'Flash: ' + jscd.flashVersion + '\n' + 'Cookies: ' + jscd.cookies + '\n' + 'Screen Size: ' + jscd.screen + '\n\n' + 'Full User Agent: ' + navigator.userAgent ); }); </script>
Sample survey attached:
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:
Last edit: 8 years 2 months ago by tpartner.
The following user(s) said Thank You: rasheed
The topic has been locked.
- rasheed
- Offline
- New Member
Less
More
- Posts: 18
- Thank you received: 0
8 years 2 months ago #131133
by rasheed
Replied by rasheed on topic Log Screen Size
Thank you, this is much appreciated.
I tried this at the end to hide the question but didn't work:
$('#question'+QID).hide();
});
</script>
I tried this at the end to hide the question but didn't work:
$('#question'+QID).hide();
});
</script>
The topic has been locked.