diff --git a/.gitignore b/.gitignore
index 496ee2c..af56f61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.DS_Store
\ No newline at end of file
+.DS_Store
+.idea/
diff --git a/README.mkdn b/README.mkdn
index ff6ebc5..fcf7fcd 100644
--- a/README.mkdn
+++ b/README.mkdn
@@ -3,32 +3,41 @@
CSS Browser Selector is a very small javascript which empowers CSS selectors.
You can now write code for: browser, browser version, platform, platform version, device, device version.
Best part: no more hacks; all compliant code.
-
More info: [http://rafael.adm.br/css_browser_selector](http://rafael.adm.br/css_browser_selector)
beta/experimental versions: [https://github.com/verbatim/css_browser_selector/](https://github.com/verbatim/css_browser_selector/)
Identifies
browsers: Firefox; IE; Opera; Safari; Chrome, Konqueror, Iron
-
browser versions: (most importantly: ie6, ie7, ie8, ie9)
+
browser versions: (most importantly: ie6, ie7, ie8, ie9, ie10, ie11)
rendering engines: Webkit; Mozilla; Gecko
-
platforms/OSes: Mac; Win: Win8, Win7, Vista, WinXP, Win2k, WinNT; FreeBSD; Linux/x11
+
platforms/OSes: Mac; Win: Win8.1, Win8, Win7, Vista, WinXP, Win2k, WinNT; FreeBSD; Linux/x11
devices: Ipod; Ipad; Iphone; WebTV; Blackberry; Android; J2me; RIM Playbook; mobile (generic)
enabled technology: JS (use in conjunction with <html class="no-js"> for even more granular control)
language detection
-Recent contributors to 0.5, 0.6:
+Recent contributors to 0.5, 0.6, 0.7:
more detailed IE detection:
https://github.com/kevingessner/css_browser_selector/
+modernized IE detection:
+https://github.com/isarmstrong/css_browser_selector
+
more detailed WIN detection:
https://github.com/saar/css_browser_selector
+updated WIN detection
+https://github.com/isarmstrong/css_browser_selector
+
no-js to js:
paul irish: http://paulirish.com/2009/avoiding-the-fouc-v3/
mac versioning
https://github.com/haraldmartin/css_browser_selector
+v0.7 2014-12-3
+
Modern IE detection
+
Support for Windows 8.1
+
Added an in-project demo page
v0.6.1 2012-03-14
iOS version detection
@@ -148,3 +157,4 @@ Contributors:
Alex Wiltschko
Chris Warren and Tony Nelson (http://www.imagetrend.com)
glasser
+
Ian Armstrong (https://github.com/isarmstrong/)
diff --git a/css_browser_selector.js b/css_browser_selector.js
index 0668aa7..d85bb5b 100644
--- a/css_browser_selector.js
+++ b/css_browser_selector.js
@@ -1,8 +1,11 @@
/*
-CSS Browser Selector v0.4.0 (Nov 02, 2010)
-Rafael Lima (http://rafael.adm.br)
-http://rafael.adm.br/css_browser_selector
-License: http://creativecommons.org/licenses/by/2.5/
-Contributors: http://rafael.adm.br/css_browser_selector#contributors
-*/
-function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
+ CSS Browser Selector (revived) 0.7
+ Originally written by Rafael Lima (http://rafael.adm.br)
+ http://rafael.adm.br/css_browser_selector
+ Modified by Ian Armstrong (http://imperativeideas.com)
+ License: http://creativecommons.org/licenses/by/2.5/
+
+ Forked Repo:
+ https://github.com/isarmstrong/css_browser_selector
+ */
+function log(e){window.console&&showLog&&console.log(e)}function css_browser_selector(e){function i(){var e=window.outerWidth||m.clientWidth,i=window.outerHeight||m.clientHeight;t.orientation=i>e?"portrait":"landscape",m.className=m.className.replace(/ ?orientation_\w+/g,"").replace(/ [min|max|cl]+[w|h]_\d+/g,"");for(var n=s-1;n>=0;n--)if(e>=o[n]){t.maxw=o[n];break}widthClasses="";for(var r in t)widthClasses+=" "+r+"_"+t[r];return m.className=m.className+widthClasses,widthClasses}var t={},o=[320,480,640,768,1024,1152,1280,1440,1680,1920,2560],s=o.length,n=e.toLowerCase(),r=function(e){return RegExp(e,"i").test(n)},a=function(e,i){i=i.replace(".","_");for(var t=i.indexOf("_"),o="";t>0;)o+=" "+e+i.substring(0,t),t=i.indexOf("_",t+1);return o+=" "+e+i},p="gecko",d="webkit",g="chrome",l="firefox",x="safari",c="opera",w="mobile",E="android",R="blackberry",$="lang_",_="device_",m=document.documentElement,b=[!/opera|webtv/i.test(n)&&/msie\s(\d+)/.test(n)?"ie ie"+(/trident\/7\.0/.test(n)?"11":RegExp.$1):r(!/opera|webtv/i.test(n)&&/msie\s(\d+)/.test(n))?"ie ie"+(/trident\/6\.0/.test(n)?"10":RegExp.$1):r(!/opera|webtv/i.test(n)&&/msie\s(\d+)/.test(n))?"ie ie"+(/trident\/5\.0/.test(n)?"9":RegExp.$1):r(!/opera|webtv/i.test(n)&&/msie\s(\d+)/.test(n))?"ie ie"+(/trident\/4\.0/.test(n)?"8":RegExp.$1):r("firefox/")?p+" "+l+(/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(n)?" "+l+RegExp.$2+" "+l+RegExp.$2+"_"+RegExp.$4:""):r("chrome")?d+" "+g+(/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(n)?" "+g+RegExp.$2+(RegExp.$4>0?" "+g+RegExp.$2+"_"+RegExp.$4:""):""):r("gecko/")?p:r("opera")?c+(/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(n)?" "+c+RegExp.$2+" "+c+RegExp.$2+"_"+RegExp.$4:/opera(\s|\/)(\d+)\.(\d+)/.test(n)?" "+c+RegExp.$2+" "+c+RegExp.$2+"_"+RegExp.$3:""):r("konqueror")?"konqueror":r("blackberry")?R+(/Version\/(\d+)(\.(\d+)+)/i.test(n)?" "+R+RegExp.$1+" "+R+RegExp.$1+RegExp.$2.replace(".","_"):/Blackberry ?(([0-9]+)([a-z]?))[\/|;]/gi.test(n)?" "+R+RegExp.$2+(RegExp.$3?" "+R+RegExp.$2+RegExp.$3:""):""):r("android")?E+(/Version\/(\d+)(\.(\d+))+/i.test(n)?" "+E+RegExp.$1+" "+E+RegExp.$1+RegExp.$2.replace(".","_"):"")+(/Android (.+); (.+) Build/i.test(n)?" "+_+RegExp.$2.replace(/ /g,"_").replace(/-/g,"_"):""):r("iron")?d+" iron":r("applewebkit/")?d+" "+x+(/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(n)?" "+x+RegExp.$2+" "+x+RegExp.$2+RegExp.$3.replace(".","_"):/ Safari\/(\d+)/i.test(n)?"419"==RegExp.$1||"417"==RegExp.$1||"416"==RegExp.$1||"412"==RegExp.$1?" "+x+"2_0":"312"==RegExp.$1?" "+x+"1_3":"125"==RegExp.$1?" "+x+"1_2":"85"==RegExp.$1?" "+x+"1_0":"":""):r("mozilla/")?p:"",r("android|mobi|mobile|j2me|iphone|ipod|ipad|blackberry|playbook|kindle|silk")?w:"",r("j2me")?"j2me":r("ipad|ipod|iphone")?(/CPU( iPhone)? OS (\d+[_|\.]\d+([_|\.]\d+)*)/i.test(n)?"ios"+a("ios",RegExp.$2):"")+" "+(/(ip(ad|od|hone))/gi.test(n)?RegExp.$1:""):r("playbook")?"playbook":r("kindle|silk")?"kindle":r("playbook")?"playbook":r("mac")?"mac"+(/mac os x ((\d+)[.|_](\d+))/.test(n)?" mac"+RegExp.$2+" mac"+RegExp.$1.replace(".","_"):""):r("win")?"win"+(r("windows nt 6.3")?" win8.1":r("windows nt 6.2")?" win8":r("windows nt 6.1")?" win7":r("windows nt 6.0")?" vista":r("windows nt 5.2")||r("windows nt 5.1")?" win_xp":r("windows nt 5.0")?" win_2k":r("windows nt 4.0")||r("WinNT4.0")?" win_nt":""):r("freebsd")?"freebsd":r("x11|linux")?"linux":"",/[; |\[](([a-z]{2})(\-[a-z]{2})?)[)|;|\]]/i.test(n)?($+RegExp.$2).replace("-","_")+(""!=RegExp.$3?(" "+$+RegExp.$1).replace("-","_"):""):"",r("ipad|iphone|ipod")&&!r("safari")?"ipad_app":""];window.onresize=i,i();var f=b.join(" ")+" js ";return m.className=(f+m.className.replace(/\b(no[-|_]?)?js\b/g,"")).replace(/^ /,"").replace(/ +/g," "),f}showLog=!0,css_browser_selector(navigator.userAgent);
\ No newline at end of file
diff --git a/css_browser_selector_dev.js b/css_browser_selector_dev.js
index 3fddee5..8925249 100644
--- a/css_browser_selector_dev.js
+++ b/css_browser_selector_dev.js
@@ -1,12 +1,12 @@
/*
-CSS Browser Selector 0.6.1
+CSS Browser Selector (revived) 0.7
Originally written by Rafael Lima (http://rafael.adm.br)
http://rafael.adm.br/css_browser_selector
+Modified by Ian Armstrong (http://imperativeideas.com)
License: http://creativecommons.org/licenses/by/2.5/
-Co-maintained by:
-https://github.com/verbatim/css_browser_selector
-
+Forked Repo:
+https://github.com/isarmstrong/css_browser_selector
*/
showLog=true;
@@ -19,11 +19,11 @@ function css_browser_selector(u)
allScreens = screens.length,
ua=u.toLowerCase(),
is=function(t) { return RegExp(t,"i").test(ua); },
- version = function(p,n)
- {
- n=n.replace(".","_"); var i = n.indexOf('_'), ver="";
- while (i>0) {ver += " "+ p+n.substring(0,i);i = n.indexOf('_', i+1);}
- ver += " "+p+n; return ver;
+ version = function(p,n)
+ {
+ n=n.replace(".","_"); var i = n.indexOf('_'), ver="";
+ while (i>0) {ver += " "+ p+n.substring(0,i);i = n.indexOf('_', i+1);}
+ ver += " "+p+n; return ver;
},
g='gecko',
w='webkit',
@@ -38,25 +38,29 @@ function css_browser_selector(u)
dv='device_',
html=document.documentElement,
b= [
-
+
// browser
- (!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua))?('ie ie'+(/trident\/4\.0/.test(ua) ? '8' : RegExp.$1))
- :is('firefox/')?g+ " " + f+(/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+f+RegExp.$2 + ' '+f+RegExp.$2+"_"+RegExp.$4:'')
+ (!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua))?('ie ie'+(/trident\/7\.0/.test(ua) ? '11' : RegExp.$1))
+ :is (!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua))?('ie ie'+(/trident\/6\.0/.test(ua) ? '10' : RegExp.$1))
+ :is (!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua))?('ie ie'+(/trident\/5\.0/.test(ua) ? '9' : RegExp.$1))
+ :is (!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua))?('ie ie'+(/trident\/4\.0/.test(ua) ? '8' : RegExp.$1))
+ :is('firefox/')?g+ " " + f+(/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+f+RegExp.$2 + ' '+f+RegExp.$2+"_"+RegExp.$4:'')
+ :is('chrome')?w+ ' '+c+(/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+c+RegExp.$2 +((RegExp.$4>0) ? ' '+c+RegExp.$2+"_"+RegExp.$4:''):'')
:is('gecko/')?g
:is('opera')?o+(/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+o+RegExp.$2 + ' '+o+RegExp.$2+"_"+RegExp.$4 : (/opera(\s|\/)(\d+)\.(\d+)/.test(ua)?' '+o+RegExp.$2+" "+o+RegExp.$2+"_"+RegExp.$3:''))
:is('konqueror')?'konqueror'
-
- :is('blackberry') ?
- ( bb +
+
+ :is('blackberry') ?
+ ( bb +
( /Version\/(\d+)(\.(\d+)+)/i.test(ua)
? " " + bb+ RegExp.$1 + " "+bb+ RegExp.$1+RegExp.$2.replace('.','_')
- : (/Blackberry ?(([0-9]+)([a-z]?))[\/|;]/gi.test(ua)
+ : (/Blackberry ?(([0-9]+)([a-z]?))[\/|;]/gi.test(ua)
? ' ' +bb+RegExp.$2 + (RegExp.$3?' ' +bb+RegExp.$2+RegExp.$3:'')
: '')
)
) // blackberry
-
- :is('android') ?
+
+ :is('android') ?
( a +
( /Version\/(\d+)(\.(\d+))+/i.test(ua)
? " " + a+ RegExp.$1 + " "+a+ RegExp.$1+RegExp.$2.replace('.','_')
@@ -65,36 +69,34 @@ function css_browser_selector(u)
? ' '+dv+( (RegExp.$2).replace(/ /g,"_") ).replace(/-/g,"_")
:'' )
) //android
-
- :is('chrome')?w+ ' '+c+(/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+c+RegExp.$2 +((RegExp.$4>0) ? ' '+c+RegExp.$2+"_"+RegExp.$4:''):'')
-
+
:is('iron')?w+' iron'
-
- :is('applewebkit/') ?
- ( w+ ' '+ s +
+
+ :is('applewebkit/') ?
+ ( w+ ' '+ s +
( /version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)
? ' '+ s +RegExp.$2 + " "+s+ RegExp.$2+RegExp.$3.replace('.','_')
- : ( / Safari\/(\d+)/i.test(ua)
- ?
- ( (RegExp.$1=="419" || RegExp.$1=="417" || RegExp.$1=="416" || RegExp.$1=="412" ) ? ' '+ s + '2_0'
+ : ( / Safari\/(\d+)/i.test(ua)
+ ?
+ ( (RegExp.$1=="419" || RegExp.$1=="417" || RegExp.$1=="416" || RegExp.$1=="412" ) ? ' '+ s + '2_0'
: RegExp.$1=="312" ? ' '+ s + '1_3'
: RegExp.$1=="125" ? ' '+ s + '1_2'
: RegExp.$1=="85" ? ' '+ s + '1_0'
: '' )
:'')
)
- ) //applewebkit
-
+ ) //applewebkit
+
:is('mozilla/')?g
:''
-
+
// mobile
,is("android|mobi|mobile|j2me|iphone|ipod|ipad|blackberry|playbook|kindle|silk")?m:''
-
+
// os/platform
,is('j2me')?'j2me'
- :is('ipad|ipod|iphone')?
- (
+ :is('ipad|ipod|iphone')?
+ (
(
/CPU( iPhone)? OS (\d+[_|\.]\d+([_|\.]\d+)*)/i.test(ua) ?
'ios' + version('ios',RegExp.$2) : ''
@@ -107,28 +109,29 @@ function css_browser_selector(u)
:is('playbook')?'playbook'
:is('mac')?'mac'+ (/mac os x ((\d+)[.|_](\d+))/.test(ua) ? ( ' mac' + (RegExp.$2) + ' mac' + (RegExp.$1).replace('.',"_") ) : '' )
:is('win')?'win'+
- (is('windows nt 6.2')?' win8'
+ (is('windows nt 6.3')?' win8.1'
+ :is('windows nt 6.2')?' win8'
:is('windows nt 6.1')?' win7'
:is('windows nt 6.0')?' vista'
- :is('windows nt 5.2') || is('windows nt 5.1') ? ' win_xp'
+ :is('windows nt 5.2') || is('windows nt 5.1') ? ' win_xp'
:is('windows nt 5.0')?' win_2k'
:is('windows nt 4.0') || is('WinNT4.0') ?' win_nt'
: ''
- )
+ )
:is('freebsd')?'freebsd'
:(is('x11|linux'))?'linux'
:''
-
+
// user agent language
,(/[; |\[](([a-z]{2})(\-[a-z]{2})?)[)|;|\]]/i.test(ua))?(lang+RegExp.$2).replace("-","_")+(RegExp.$3!=''?(' '+lang+RegExp.$1).replace("-","_"):''):''
-
+
// beta: test if running iPad app
,( is('ipad|iphone|ipod') && !is('safari') ) ? 'ipad_app' : ''
-
-
+
+
]; // b
- function screenSize()
+ function screenSize()
{
var w = window.outerWidth || html.clientWidth;
var h = window.outerHeight || html.clientHeight;
@@ -141,16 +144,16 @@ function css_browser_selector(u)
html.className = ( html.className +widthClasses );
return widthClasses;
} // screenSize
-
+
window.onresize = screenSize;
- screenSize();
+ screenSize();
var cssbs = (b.join(' ')) + " js ";
html.className = ( cssbs + html.className.replace(/\b(no[-|_]?)?js\b/g,"") ).replace(/^ /, "").replace(/ +/g," ");
return cssbs;
}
-
+
css_browser_selector(navigator.userAgent);
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..efc4d5e
--- /dev/null
+++ b/index.html
@@ -0,0 +1,105 @@
+
+
+
USER AGENT STRING: