/*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
if ( !CKEDITOR.env )\r
{\r
/**\r
- * Environment and browser information.\r
- * @namespace\r
- * @example\r
+ * @namespace Environment and browser information.\r
*/\r
CKEDITOR.env = (function()\r
{\r
*/\r
mac : ( agent.indexOf( 'macintosh' ) > -1 ),\r
\r
+ /**\r
+ * Indicates that CKEditor is running on a quirks mode environemnt.\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.quirks )\r
+ * alert( "Nooooo!" );\r
+ */\r
quirks : ( document.compatMode == 'BackCompat' ),\r
\r
+ /**\r
+ * Indicates that CKEditor is running on a mobile like environemnt.\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.mobile )\r
+ * alert( "I'm running with CKEditor today!" );\r
+ */\r
mobile : ( agent.indexOf( 'mobile' ) > -1 ),\r
\r
+ /**\r
+ * Indicates that CKEditor is running on Apple iPhone/iPad/iPod devices.\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.iOS )\r
+ * alert( "I like little apples!" );\r
+ */\r
+ iOS : /(ipad|iphone|ipod)/.test(agent),\r
+\r
+ /**\r
+ * Indicates that the browser has a custom domain enabled. This has\r
+ * been set with "document.domain".\r
+ * @returns {Boolean} "true" if a custom domain is enabled.\r
+ * @example\r
+ * if ( CKEDITOR.env.isCustomDomain() )\r
+ * alert( "I'm in a custom domain!" );\r
+ */\r
isCustomDomain : function()\r
{\r
+ if ( !this.ie )\r
+ return false;\r
+\r
var domain = document.domain,\r
hostname = window.location.hostname;\r
\r
- return this.ie &&\r
- domain != hostname &&\r
+ return domain != hostname &&\r
domain != ( '[' + hostname + ']' ); // IPv6 IP support (#5434)\r
- }\r
+ },\r
+\r
+ /**\r
+ * Indicates that page is running under an encrypted connection.\r
+ * @returns {Boolean} "true" if the page has an encrypted connection.\r
+ * @example\r
+ * if ( CKEDITOR.env.secure )\r
+ * alert( "I'm in SSL!" );\r
+ */\r
+ secure : location.protocol == 'https:'\r
};\r
\r
/**\r
version = parseFloat( agent.match( /msie (\d+)/ )[1] );\r
\r
/**\r
- * Indicate IE8 browser.\r
+ * Indicates that CKEditor is running on Internet Explorer 8.\r
+ * @name CKEDITOR.env.ie8\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.ie8 )\r
+ * alert( "I'm on IE8!" );\r
*/\r
env.ie8 = !!document.documentMode;\r
\r
/**\r
- * Indicte IE8 document mode.\r
+ * Indicates that CKEditor is running on Internet Explorer 8 on\r
+ * standards mode.\r
+ * @name CKEDITOR.env.ie8Compat\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.ie8Compat )\r
+ * alert( "Now I'm on IE8, for real!" );\r
*/\r
env.ie8Compat = document.documentMode == 8;\r
\r
/**\r
+ * Indicates that CKEditor is running on Internet Explorer 9's standards mode.\r
+ * @name CKEDITOR.env.ie9Compat\r
+ * @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.ie9Compat )\r
+ * alert( "IE9, the beauty of the web!" );\r
+ */\r
+ env.ie9Compat = document.documentMode == 9;\r
+\r
+ /**\r
* Indicates that CKEditor is running on an IE7-like environment, which\r
* includes IE7 itself and IE8's IE7 document mode.\r
+ * @name CKEDITOR.env.ie7Compat\r
* @type Boolean\r
+ * @example\r
+ * if ( CKEDITOR.env.ie8Compat )\r
+ * alert( "I'm on IE7 or on an IE7 like IE8!" );\r
*/\r
env.ie7Compat = ( ( version == 7 && !document.documentMode )\r
|| document.documentMode == 7 );\r
/**\r
* Indicates that CKEditor is running on an IE6-like environment, which\r
* includes IE6 itself and IE7 and IE8 quirks mode.\r
+ * @name CKEDITOR.env.ie6Compat\r
* @type Boolean\r
* @example\r
* if ( CKEDITOR.env.ie6Compat )\r
* alert( "I'm on IE6 or quirks mode!" );\r
*/\r
env.ie6Compat = ( version < 7 || env.quirks );\r
-\r
}\r
\r
// Gecko.\r
version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] );\r
\r
/**\r
- * Contains the browser version.\r
- *\r
+ * Contains the browser version.<br />\r
+ * <br />\r
* For gecko based browsers (like Firefox) it contains the revision\r
* number with first three parts concatenated with a padding zero\r
- * (e.g. for revision 1.9.0.2 we have 10900).\r
- *\r
+ * (e.g. for revision 1.9.0.2 we have 10900).<br />\r
+ * <br />\r
* For webkit based browser (like Safari and Chrome) it contains the\r
* WebKit build version (e.g. 522).\r
* @name CKEDITOR.env.version\r
* alert( "Your browser is pretty cool!" );\r
*/\r
env.isCompatible =\r
+\r
+ // White list of mobile devices that supports.\r
+ env.iOS && version >= 534 ||\r
+\r
!env.mobile && (\r
+\r
( env.ie && version >= 6 ) ||\r
( env.gecko && version >= 10801 ) ||\r
( env.opera && version >= 9.5 ) ||\r
( env.webkit && version >= 522 ) ||\r
false );\r
\r
- // The CSS class to be appended on the main UI containers, making it\r
- // easy to apply browser specific styles to it.\r
+ /**\r
+ * The CSS class to be appended on the main UI containers, making it\r
+ * easy to apply browser specific styles to it.\r
+ * @name CKEDITOR.env.cssClass\r
+ * @type String\r
+ * @example\r
+ * myDiv.className = CKEDITOR.env.cssClass;\r
+ */\r
env.cssClass =\r
'cke_browser_' + (\r
env.ie ? 'ie' :\r
env.gecko ? 'gecko' :\r
env.opera ? 'opera' :\r
- env.air ? 'air' :\r
env.webkit ? 'webkit' :\r
'unknown' );\r
\r
{\r
env.cssClass += ' cke_browser_ie' + (\r
env.version < 7 ? '6' :\r
- env.version >= 8 ? '8' :\r
+ env.version >= 8 ? document.documentMode:\r
'7' );\r
\r
if ( env.quirks )\r
env.cssClass += ' cke_browser_iequirks';\r
+\r
+ if ( document.documentMode && document.documentMode >=9 )\r
+ env.cssClass += ' cke_browser_ie9plus';\r
}\r
\r
if ( env.gecko && version < 10900 )\r
env.cssClass += ' cke_browser_gecko18';\r
\r
+ if ( env.air )\r
+ env.cssClass += ' cke_browser_air';\r
+\r
return env;\r
})();\r
}\r