X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2Fcore%2F01_XUa.js;h=7296b60a2c1abed6ecc93e5a5152305ba6c9acbd;hb=53149facb2f22305d34b9ac01803a6af433355d0;hp=b04c1cc8f1453346491bc08bb6b72b13f88633dc;hpb=b99b45e1aada2d427c4e9ee8cefb7bd8b13082e3;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/core/01_XUa.js b/0.6.x/js/core/01_XUa.js index b04c1cc..7296b60 100644 --- a/0.6.x/js/core/01_XUa.js +++ b/0.6.x/js/core/01_XUa.js @@ -1,39 +1,95 @@ -if( !window['console'] ) console = { log : function(){} }; /* * UA */ -var X = X || { - emptyFunction : new Function, - inHead : (function( s ){ - s = s[ s.length - 1 ]; - return ( s.parent || s.parentNode ).tagName.toLowerCase() === ( 'head' ); - })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) ) -}; - X.UA = (function( n, undefined ){ var acme = {}, dua = n.userAgent, dav = n.appVersion, tv = parseFloat(dav), i; - acme.Opera = ( dua.indexOf("Opera") >= 0 ) ? tv : undefined; + acme.Opera = ( 0 < dua.indexOf("Opera") ) ? tv : undefined; + acme.OperaMobile = ( 0 < dua.indexOf("Opera Mobi") ) ? tv : undefined; + acme.IE = undefined; if( document.all && !acme.Opera ){ acme.IE = parseFloat(dav.split("MSIE ")[1]) || undefined; return acme; }; + + // Blink + // Netfront + // iCab acme.Khtml = ( dav.indexOf("Konqueror") >= 0 ) ? tv : undefined; acme.WebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined; acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined; // replace( reg, ) don't work for Sigmarion2 pocketIE - acme.Gecko = eval( '(dua.indexOf("Gecko\/") >= 0) ? parseFloat(dua.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, "$1$2" )) : undefined' ); + acme.Gecko = eval( '(navigator.userAgent.indexOf("Gecko\/") >= 0) ? parseFloat(navigator.userAgent.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, "$1$2" )) : undefined' ); i = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0); if( i && !acme.Chrome ){ acme.Safari = parseFloat( dav.split("Version/")[1] ); - if( !acme.Safari || parseFloat(dav.substr( i + 7 )) <= 419.3 ){ + i = parseFloat(dav.substr( i + 7 )); + if( !acme.Safari && i < 100 ){ + acme.Safari = 1; + }; + if( !acme.Safari && i < 125 ){ + acme.Safari = 1.1; + }; + if( !acme.Safari && i < 312 ){ + acme.Safari = 1.2; + }; + if( !acme.Safari && i < 412 ){ + acme.Safari = 1.3; + }; + if( !acme.Safari && i <= 419.3 ){ acme.Safari = 2; }; }; return acme; -})( navigator ); \ No newline at end of file +})( navigator ); + +X.UA.Android = navigator.userAgent.toLowerCase().indexOf( 'android' ) !== -1; +X.UA.iOS = navigator.userAgent.toLowerCase().indexOf( 'iphone' ) !== -1 || + navigator.userAgent.toLowerCase().indexOf( 'ipad' ) !== -1 || + navigator.userAgent.toLowerCase().indexOf( 'ipod' ) !== -1; +X.UA.IEMobile = navigator.userAgent.toLowerCase().indexOf( 'iemobile' ) !== -1 || + ( X.UA.IE && navigator.userAgent.toLowerCase().indexOf( 'windows phone' ) !== -1 ); +X.UA.TouchPad = navigator.userAgent.toLowerCase().indexOf( 'hp-tablet' ) !== -1; + +//http://www.useragentstring.com/pages/Iris/ +X.UA.Iris = navigator.userAgent.toLowerCase().indexOf( 'iris' ) !== -1; + +X.UA.EInk = + // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch) + navigator.userAgent.indexOf( 'Kobo' ) !== -1 || + // Kindle paperwhite Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+ + navigator.userAgent.indexOf( 'Kindle' ) !== -1 || + // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 + navigator.userAgent.indexOf( 'EBRD' ) !== -1; + +if( X.UA.IE && X.UA.IE < 10 ) X.UA.ActiveX = !!window[ 'ActiveXObject' ]; + +X.inObject = X.UA.IE && X.UA.IE < 5 ? + (function( name, obj ){ + var p; + if( obj[ name ] ) return true; + name += ''; // 数値も許可 + for( p in obj ){ + if( p === name ) return true; + }; + return false; + }) : + new Function( 'a,b', 'return a in b' ); + + +// Safari 3.1 未満は開発コンソールがない! +// http://shimax.cocolog-nifty.com/search/2006/09/safarijavascrip_c54d.html +if( X.UA.Safari && X.UA.WebKit < 525.13 ){ + window.onerror = function( x, y, z ){ + var n = String.fromCharCode( 10 ); + alert('window.onerrorによるエラーの捕捉:' + n + x + n + y + 'の' + z + '行目付近です。'); + return true; + }; +}; + +