10
Nov

DIY DOMAINING CODE SNIPPET: Efficiently identify if a visitor is using desktop, notebook or mobile device

This code snippet is very handy as you want to make sure that you won’t miss a domain sale because the prospect couldn’t see your page properly.

Goal: Code snippet should be intelligent enough to identify if the visitor is using a mobile device. If so, assign a variable to true otherwise the same variable will be set to false.

Let’s call that variable, say .. isMobile which will be of type boolean as that is faster than parsing an actual string containing “true” or “false”; the variable isMobile will be either assigned 0 (zero) for Desktops and Notebooks and 1 (one) for mobile devices.

On your index.html ( or index.php ), you will want to place the snippet before any html is served, so you can redirect to the proper rendering based on the screen resolution + device type.

We will limit the scope of this article to one milestone: making sure the variable isMobile is properly assigned. Later on your code, you will use isMobile to decide what sort of rendering will be served. Handling such condition later will be part of an article in the short future but at the end of this article you should be able to know, without any third party library, what sort of devices are interacting with your pages.

Within my domaining server I have placed this at the global level (apache docroot versus onedomain’s docroot), so it is applied to all domain servings. But you can also place this in your index individually. If you are interested in the global approach, please look for the upcoming article “Creating a Global Router on your Domaining server”.

// this is javascript with regular expressions. if   ( / (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop | iemobile | ip(hone | od) | ipad | iris | kindle | Android | Silk | lge | maemo | midp | mmp | 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 | phone) | xda | xiino / i.test(navigator.userAgent) || /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(navigator.userAgent.substr(0, 4))) { isMobile = true; console.log("Mobile device!"); } else { isMobile = false; console.log("Notebook/Desktop detected."; }  
Copy and paste into your project, and you are done !
This snippet has been around for a while, and it should be updated once in a while to cover possible new devices, user agents and resolutions.
Confused about the snippet code ? Here’s a good read about the above (we are not affiliated).

Do you have any improvements or questions ? Please let me know down below in the comments section.

I hope you will find this useful.

Thanks for reading.

s

 

 

 

 

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz

%d bloggers like this: