/website/longyusoft/longyusoft/include/ueditor/_src/core/browser.js

https://github.com/isold/longyu · JavaScript · 167 lines · 54 code · 16 blank · 97 comment · 29 complexity · ecc571be316af0511b1f46573b519ea9 MD5 · raw file

  1. /**
  2. * @file
  3. * @name UE.browser
  4. * @short Browser
  5. * @desc UEditor中采用的浏览器判断模块
  6. */
  7. var browser = UE.browser = function(){
  8. var agent = navigator.userAgent.toLowerCase(),
  9. opera = window.opera,
  10. browser = {
  11. /**
  12. * 检测浏览器是否为IE
  13. * @name ie
  14. * @grammar UE.browser.ie => true|false
  15. */
  16. ie : !!window.ActiveXObject,
  17. /**
  18. * 检测浏览器是否为Opera
  19. * @name opera
  20. * @grammar UE.browser.opera => true|false
  21. */
  22. opera : ( !!opera && opera.version ),
  23. /**
  24. * 检测浏览器是否为webkit内核
  25. * @name webkit
  26. * @grammar UE.browser.webkit => true|false
  27. */
  28. webkit : ( agent.indexOf( ' applewebkit/' ) > -1 ),
  29. /**
  30. * 检测浏览器是否为mac系统下的浏览器
  31. * @name mac
  32. * @grammar UE.browser.mac => true|false
  33. */
  34. mac : ( agent.indexOf( 'macintosh' ) > -1 ),
  35. /**
  36. * 检测浏览器是否处于怪异模式
  37. * @name quirks
  38. * @grammar UE.browser.quirks => true|false
  39. */
  40. quirks : ( document.compatMode == 'BackCompat' )
  41. };
  42. /**
  43. * 检测浏览器是否处为gecko内核
  44. * @name gecko
  45. * @grammar UE.browser.gecko => true|false
  46. */
  47. browser.gecko =( navigator.product == 'Gecko' && !browser.webkit && !browser.opera );
  48. var version = 0;
  49. // Internet Explorer 6.0+
  50. if ( browser.ie ){
  51. version = parseFloat( agent.match( /msie (\d+)/ )[1] );
  52. /**
  53. * 检测浏览器是否为 IE9 模式
  54. * @name ie9Compat
  55. * @grammar UE.browser.ie9Compat => true|false
  56. */
  57. browser.ie9Compat = document.documentMode == 9;
  58. /**
  59. * 检测浏览器是否为 IE8 浏览器
  60. * @name ie8
  61. * @grammar UE.browser.ie8 => true|false
  62. */
  63. browser.ie8 = !!document.documentMode;
  64. /**
  65. * 检测浏览器是否为 IE8 模式
  66. * @name ie8Compat
  67. * @grammar UE.browser.ie8Compat => true|false
  68. */
  69. browser.ie8Compat = document.documentMode == 8;
  70. /**
  71. * 检测浏览器是否运行在 兼容IE7模式
  72. * @name ie7Compat
  73. * @grammar UE.browser.ie7Compat => true|false
  74. */
  75. browser.ie7Compat = ( ( version == 7 && !document.documentMode )
  76. || document.documentMode == 7 );
  77. /**
  78. * 检测浏览器是否IE6模式或怪异模式
  79. * @name ie6Compat
  80. * @grammar UE.browser.ie6Compat => true|false
  81. */
  82. browser.ie6Compat = ( version < 7 || browser.quirks );
  83. }
  84. // Gecko.
  85. if ( browser.gecko ){
  86. var geckoRelease = agent.match( /rv:([\d\.]+)/ );
  87. if ( geckoRelease )
  88. {
  89. geckoRelease = geckoRelease[1].split( '.' );
  90. version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1;
  91. }
  92. }
  93. /**
  94. * 检测浏览器是否为chrome
  95. * @name chrome
  96. * @grammar UE.browser.chrome => true|false
  97. */
  98. if (/chrome\/(\d+\.\d)/i.test(agent)) {
  99. browser.chrome = + RegExp['\x241'];
  100. }
  101. /**
  102. * 检测浏览器是否为safari
  103. * @name safari
  104. * @grammar UE.browser.safari => true|false
  105. */
  106. if(/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)){
  107. browser.safari = + (RegExp['\x241'] || RegExp['\x242']);
  108. }
  109. // Opera 9.50+
  110. if ( browser.opera )
  111. version = parseFloat( opera.version() );
  112. // WebKit 522+ (Safari 3+)
  113. if ( browser.webkit )
  114. version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] );
  115. /**
  116. * 浏览器版本判断
  117. * IE系列返回值为5,6,7,8,9,10等
  118. * gecko系列会返回10900,158900等.
  119. * webkit系列会返回其build号 (如 522等).
  120. * @name version
  121. * @grammar UE.browser.version => number
  122. * @example
  123. * if ( UE.browser.ie && UE.browser.version == 6 ){
  124. * alert( "Ouch!居然是万恶的IE6!" );
  125. * }
  126. */
  127. browser.version = version;
  128. /**
  129. * 是否是兼容模式的浏览器
  130. * @name isCompatible
  131. * @grammar UE.browser.isCompatible => true|false
  132. * @example
  133. * if ( UE.browser.isCompatible ){
  134. * alert( "你的浏览器相当不错哦!" );
  135. * }
  136. */
  137. browser.isCompatible =
  138. !browser.mobile && (
  139. ( browser.ie && version >= 6 ) ||
  140. ( browser.gecko && version >= 10801 ) ||
  141. ( browser.opera && version >= 9.5 ) ||
  142. ( browser.air && version >= 1 ) ||
  143. ( browser.webkit && version >= 522 ) ||
  144. false );
  145. return browser;
  146. }();
  147. //快捷方式
  148. var ie = browser.ie,
  149. webkit = browser.webkit,
  150. gecko = browser.gecko,
  151. opera = browser.opera;