- Posts: 12790
- Thank you received: 3940
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Is Limesurvey able to detect the used device?
- Joffm
- Topic Author
- Offline
- LimeSurvey Community Team
Less
More
3 years 6 months ago #204699
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Is Limesurvey able to detect the used device? was created by Joffm
Enter this script in a question of type "long free text" (source code mode)
You will get a lot of information
and as you may restrict the output to the needed info you are able to filter or whatever you want to do.
And hide the question by uncommenting this line
//$('#question{QID}').hide();
forums.limesurvey.org/forum/design-issue...mobile-device#168689
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; } var vpw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); var vph = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); // 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, vieww : vpw, viewh: vph }; }(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' + 'Viewport width: ' + jscd.vieww + '\n' + 'Viewport heigth: ' + jscd.viewh + '\n' + 'Screen Size: ' + jscd.screen + '\n\n' + 'Full User Agent: ' + navigator.userAgent ); }); </script>
You will get a lot of information
and as you may restrict the output to the needed info you are able to filter or whatever you want to do.
And hide the question by uncommenting this line
//$('#question{QID}').hide();
forums.limesurvey.org/forum/design-issue...mobile-device#168689
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Please Log in to join the conversation.
- holch
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11758
- Thank you received: 2753
3 years 6 months ago #204706
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 Is Limesurvey able to detect the used device?
Speaking with yourself today?
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
The following user(s) said Thank You: DenisChenu
Please Log in to join the conversation.
- Joffm
- Topic Author
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12790
- Thank you received: 3940
3 years 6 months ago #204725
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Is Limesurvey able to detect the used device?
Sometimes I do it when I need expert advice.
This should have been the answer to the post of the same name by @kasparis.
Unfortunately it was the reason for my short-term absence.
Joffm
This should have been the answer to the post of the same name by @kasparis.
Unfortunately it was the reason for my short-term absence.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Please Log in to join the conversation.
- tammo
- Offline
- Official LimeSurvey Partner
Less
More
- Posts: 964
- Thank you received: 217
2 years 11 months ago #214981
by tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Replied by tammo on topic Is Limesurvey able to detect the used device?
I have been using this script in every survey that I made since I found it. Great.
But now something else comes up: would it be possible to write all found values in a question of the type Multiple short text? That way it is much simpler to use these values in the survey. I have been trying to do this, but did not succeed.
Can anyone point me in how to adapt this?
Thanks in advance,
Tammo
But now something else comes up: would it be possible to write all found values in a question of the type Multiple short text? That way it is much simpler to use these values in the survey. I have been trying to do this, but did not succeed.
Can anyone point me in how to adapt this?
Thanks in advance,
Tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Please Log in to join the conversation.
- Joffm
- Topic Author
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12790
- Thank you received: 3940
2 years 11 months ago #214983
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Is Limesurvey able to detect the used device?
Hi, Tammo,
I replaced this
with this in a multiple short text
Joffm
I replaced this
Code:
// 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' + 'Viewport width: ' + jscd.vieww + '\n' + 'Viewport heigth: ' + jscd.viewh + '\n' + 'Screen Size: ' + jscd.screen + '\n\n' + 'Full User Agent: ' + navigator.userAgent );
with this in a multiple short text
Code:
var thisQuestion = $('#question{QID}'); // Fill the array $('input[type=text]:eq(0)', thisQuestion).val(jscd.os +' '+ jscd.osVersion); $('input[type=text]:eq(1)', thisQuestion).val(jscd.browser +' '+ jscd.browserMajorVersion + ' (' + jscd.browserVersion + ')' ); $('input[type=text]:eq(2)', thisQuestion).val( jscd.vieww ); $('input[type=text]:eq(3)', thisQuestion).val( jscd.viewh ); });
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: tammo
Please Log in to join the conversation.
- tammo
- Offline
- Official LimeSurvey Partner
Less
More
- Posts: 964
- Thank you received: 217
2 years 11 months ago #215001
by tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Replied by tammo on topic Is Limesurvey able to detect the used device?
Priceless! Thank you!
Tammo
Tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13935
- Thank you received: 2551
2 years 11 months ago #215016
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 Is Limesurvey able to detect the used device?
gitlab.com/SondagesPro/QuestionSettingsType/findUserAgentInfo
Sample : demo.sondages.pro/772229
If you ask kindly : i add gitlab.com/SondagesPro/QuestionSettingsT...erAgentInfo.php#L202 isMobile and isTablet (and update detector)
Denis
Sample : demo.sondages.pro/772229
If you ask kindly : i add gitlab.com/SondagesPro/QuestionSettingsT...erAgentInfo.php#L202 isMobile and isTablet (and update detector)
Denis
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.
Please Log in to join the conversation.
- tammo
- Offline
- Official LimeSurvey Partner
Less
More
- Posts: 964
- Thank you received: 217
2 years 11 months ago #215019
by tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Replied by tammo on topic Is Limesurvey able to detect the used device?
Hi Denis,
I think this would be a great solution for many people that did not even know that this existed. So: yes, I kindly ask you to add these extra features.
That would be great!
My use case: my customer wants to exclude some questions/question groupds for people that visit the survey on their mobile phone.
Other use case that I can think of: add some extra questions about where you are when you are answering via your mobile phone.
Thanks in advance,
Tammo
I think this would be a great solution for many people that did not even know that this existed. So: yes, I kindly ask you to add these extra features.
That would be great!
My use case: my customer wants to exclude some questions/question groupds for people that visit the survey on their mobile phone.
Other use case that I can think of: add some extra questions about where you are when you are answering via your mobile phone.
Thanks in advance,
Tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Please Log in to join the conversation.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
2 years 11 months ago #215024
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 Is Limesurvey able to detect the used device?
3rd use case - to convince clients that they should be designing/targeting their surveys for mobile devices. I frequently sniff the user agent and screen size to prove to clients that 50% + of responses are on phones.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13935
- Thank you received: 2551
2 years 11 months ago #215040
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 Is Limesurvey able to detect the used device?
Working on it this week-end : i think it's better to create it as a Question settings ?
Not a theme : reason :
1. It must work on a whole in one survey
2. It must allow using value even it's hidden by attribute
3. The value muts be used in all Expression Manager system : even when start (no need JS).
What it's you opinion about Question type :
- In short text question type : fill by 'drodown for each value'
- A multiple short text : Use as userAgentInfo : need to fill subquestion code for each type ?
PS : i send an update just for isTablet and isMobile this afternoon.
Not a theme : reason :
1. It must work on a whole in one survey
2. It must allow using value even it's hidden by attribute
3. The value muts be used in all Expression Manager system : even when start (no need JS).
What it's you opinion about Question type :
- In short text question type : fill by 'drodown for each value'
- A multiple short text : Use as userAgentInfo : need to fill subquestion code for each type ?
PS : i send an update just for isTablet and isMobile this afternoon.
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.
Please Log in to join the conversation.
- tammo
- Offline
- Official LimeSurvey Partner
Less
More
- Posts: 964
- Thank you received: 217
2 years 11 months ago #215049
by tammo
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Replied by tammo on topic Is Limesurvey able to detect the used device?
Not exactly sure about what you mean:
2. It must allow using value even it's hidden by attribute ?
3. The value muts be used in all Expression Manager system : even when start (no need JS).
When using a short text question: the survey designer has flexibility to choose what value he want to use. Could be that he is just interested in the "isMobile" value and not in others.
A multiple short text question would be ideal, but it will take a big task in defining a good user interface for that, I guess.
This is what I could make of what Joffm proposed:
research.respondage.eu/index.php/952431?newtest=Y&lang=en
See attached .lss file for example
2. It must allow using value even it's hidden by attribute ?
3. The value muts be used in all Expression Manager system : even when start (no need JS).
When using a short text question: the survey designer has flexibility to choose what value he want to use. Could be that he is just interested in the "isMobile" value and not in others.
A multiple short text question would be ideal, but it will take a big task in defining a good user interface for that, I guess.
This is what I could make of what Joffm proposed:
research.respondage.eu/index.php/952431?newtest=Y&lang=en
See attached .lss file for example
Tammo ter Hark at Respondage
For Limesurvey reporting, education and customized themes
respondage.nl
Attachments:
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13935
- Thank you received: 2551
2 years 11 months ago #215050
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 Is Limesurvey able to detect the used device?
> 2. It must allow using value even it's hidden by attribute ?
With JS solution : you need to hide the question by CSS, in my opinion : you must be allowed to really hide questions.
With JS solution : maybe user can update answer ?
With JS solution : can not use in a question by question survey
> 3. The value muts be used in all Expression Manager system : even when start (no need JS).
With JS solution : you need to add javascript to upadet answer and trigger if some question must be hidden for mobile at 1st page.
If we fill like prefilling URL : i think we can use on 1st page .
Even in the text , or adding a class on some question etc …
Else about hidding some question for mobile/tablet/ etc … you can use getbootstrap.com/docs/3.4/css/#responsive-utilities-classes directly.
With JS solution : you need to hide the question by CSS, in my opinion : you must be allowed to really hide questions.
With JS solution : maybe user can update answer ?
With JS solution : can not use in a question by question survey
> 3. The value muts be used in all Expression Manager system : even when start (no need JS).
With JS solution : you need to add javascript to upadet answer and trigger if some question must be hidden for mobile at 1st page.
If we fill like prefilling URL : i think we can use on 1st page .
Even in the text , or adding a class on some question etc …
Else about hidding some question for mobile/tablet/ etc … you can use getbootstrap.com/docs/3.4/css/#responsive-utilities-classes directly.
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.
Please Log in to join the conversation.