- Posts: 40
- Thank you received: 1
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Checking if a survey is opened via mobile device?
- DanielVN
- Topic Author
- Offline
- Senior Member
Less
More
5 years 11 months ago #168679
by DanielVN
Checking if a survey is opened via mobile device? was created by DanielVN
Hi,
I have a request from a client that wants to make sure that the a potential survey will be opened only via mobile device. If not we should screen out the respondents.
Could you please advise if there is any solution for this?
Thank you very much in advance.
Best regrads
Daniel
I have a request from a client that wants to make sure that the a potential survey will be opened only via mobile device. If not we should screen out the respondents.
Could you please advise if there is any solution for this?
Thank you very much in advance.
Best regrads
Daniel
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10109
- Thank you received: 3595
5 years 11 months ago #168680
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 Checking if a survey is opened via mobile device?
Define "mobile device". That's a moving target now. For example a Surface Pro is both a tablet and a PC/laptop. You may be better to target screen sizes.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- DanielVN
- Topic Author
- Offline
- Senior Member
Less
More
- Posts: 40
- Thank you received: 1
5 years 11 months ago #168682
by DanielVN
Replied by DanielVN on topic Checking if a survey is opened via mobile device?
Hi Tony,
For this particular survey we should consider only mobile phones as mobile device.
Just to add i'm using lime version 2.73.
For this particular survey we should consider only mobile phones as mobile device.
Just to add i'm using lime version 2.73.
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13647
- Thank you received: 2491
5 years 11 months ago #168683
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 Checking if a survey is opened via mobile device?
Tony are right,
Else :
- Included javascript solution : github.com/LimeSurvey/LimeSurvey/tree/ma...answer/shortfreetext
- PHP solution (need little update for 3.X) gitlab.com/SondagesPro/findUserAgentInfo
Else :
- Included javascript solution : github.com/LimeSurvey/LimeSurvey/tree/ma...answer/shortfreetext
- PHP solution (need little update for 3.X) gitlab.com/SondagesPro/findUserAgentInfo
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.
- orvil
- Offline
- Premium Member
Less
More
- Posts: 111
- Thank you received: 20
5 years 11 months ago #168685
by orvil
Best regards/Beste Grüße,
O. Villani
Replied by orvil on topic Checking if a survey is opened via mobile device?
You will find a jQuery solution here, working in most cases to my experience:
detectmobilebrowsers.com/
Hint: add this to DenisChenu's script addon in an hidden equation question at the beginning of the survey
jQuery code:
There is also a php version avaliable on the page I've mentioned. This could be integrated into the em_expression-helper.php =>@tpartner this brings me back to the idea of an update save extendable em_expression_helper
detectmobilebrowsers.com/
Hint: add this to DenisChenu's script addon in an hidden equation question at the beginning of the survey
jQuery code:
Code:
/** * jQuery.browser.mobile (http://detectmobilebrowser.com/) * * jQuery.browser.mobile will be true if the browser is a mobile device * **/ (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
There is also a php version avaliable on the page I've mentioned. This could be integrated into the em_expression-helper.php =>@tpartner this brings me back to the idea of an update save extendable em_expression_helper
Best regards/Beste Grüße,
O. Villani
The topic has been locked.
- Joffm
- Away
- LimeSurvey Community Team
Less
More
- Posts: 12933
- Thank you received: 3979
5 years 11 months ago #168689
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Checking if a survey is opened via mobile device?
Hi, here is another JS solution
You can check for the "jscd.mobile" or the viewport or screensize.
Joffm
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 can check for the "jscd.mobile" or the viewport or screensize.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
- DanielVN
- Topic Author
- Offline
- Senior Member
Less
More
- Posts: 40
- Thank you received: 1
5 years 11 months ago #168690
by DanielVN
Replied by DanielVN on topic Checking if a survey is opened via mobile device?
Thank you all for your help.
I'm afraid that i might need some step by step guidance in order to implement this in the survey.
Thank you very much in advance.
I'm afraid that i might need some step by step guidance in order to implement this in the survey.
Thank you very much in advance.
The topic has been locked.
- orvil
- Offline
- Premium Member
Less
More
- Posts: 111
- Thank you received: 20
5 years 11 months ago #168693
by orvil
Best regards/Beste Grüße,
O. Villani
Replied by orvil on topic Checking if a survey is opened via mobile device?
Hi DanielVN,
may I ask for the version of LS you are working with? Will help for step-by-step
may I ask for the version of LS you are working with? Will help for step-by-step
Best regards/Beste Grüße,
O. Villani
The topic has been locked.
- DanielVN
- Topic Author
- Offline
- Senior Member
Less
More
- Posts: 40
- Thank you received: 1
5 years 11 months ago #168694
by DanielVN
Replied by DanielVN on topic Checking if a survey is opened via mobile device?
Hi Orvil,
I'm using version 2.73.0+171219
I'm using version 2.73.0+171219
The topic has been locked.
- Joffm
- Away
- LimeSurvey Community Team
Less
More
- Posts: 12933
- Thank you received: 3979
5 years 11 months ago #168697
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Checking if a survey is opened via mobile device?
Hi, Daniel,
here is a working example.
If there are any questions about the equation, don't hesitate to ask.
Joffm
here is a working example.
If there are any questions about the equation, don't hesitate to ask.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Attachments:
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13647
- Thank you received: 2491
5 years 11 months ago #168701
by DenisChenu
Done with PHP Server var
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 Checking if a survey is opened via mobile device?
My solution is done without javascript , with hidden (totally, not by css or javascript).orvil wrote: Hint: add this to DenisChenu's script addon in an hidden equation question at the beginning of the survey
Done with PHP Server var
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.
- orvil
- Offline
- Premium Member
Less
More
- Posts: 111
- Thank you received: 20
5 years 11 months ago #168702
by orvil
Best regards/Beste Grüße,
O. Villani
Replied by orvil on topic Checking if a survey is opened via mobile device?
Hi,
simplest way:
A - decide which info is required
1.) create a new question (textarea)
2.) use the "Source" button in the Question editor
3.) copy and paste joffm's script (it gives you more information than mine) into the editor area
3) save the question an run it
You will see something like this:
B - if necessary delete the lines not necessary. E.g. if you only need the mobile flag, reduce the part of the script (at the end)
to:
simplest way:
A - decide which info is required
1.) create a new question (textarea)
2.) use the "Source" button in the Question editor
3.) copy and paste joffm's script (it gives you more information than mine) into the editor area
3) save the question an run it
You will see something like this:
Code:
OS: Windows 7 Browser: Chrome 66 (66.0.3359.170) Mobile: false Flash: no check Cookies: true Viewport width: 2691 Viewport heigth: 1612 Screen Size: 3072 x 1728 Full User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36
B - if necessary delete the lines not necessary. E.g. if you only need the mobile flag, reduce the part of the script (at the end)
Code:
... ... $(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 ); });
to:
Code:
... ... $(document).ready(function() { // Hide this question (remove double slash below to hide) //$('#question{QID}').hide(); // Load the question $('#question{QID} textarea').val( jscd.mobile; ); });
Best regards/Beste Grüße,
O. Villani
The topic has been locked.