Browser: docs, s/backwards compatibility/backward compatibility/
[mootools.git] / Docs / Browser / Browser.md
blobab4b91cd71dfd33e3821eeb46e1db9553d3efd9b
1 Object: Browser {#Browser}
2 ==========================
4 Some browser properties are attached to the Browser Object for browser and platform detection.
6 Browser.Features {#Browser:Browser-Features}
7 --------------------------------------------
9 * Browser.Features.xpath - (*boolean*) True if the browser supports DOM queries using XPath.
10 * Browser.Features.air - (*boolean*)  True if the browser supports AIR.
11 * Browser.Features.query - (*boolean*) True if the browser supports querySelectorAll.
12 * Browser.Features.json - (*boolean*) True if the browser has a native JSON object.
13 * Browser.Features.xhr - (*boolean*) True if the browser supports native XMLHTTP object.
15 Browser.Request {#Browser:Browser-Request}
16 ------------------------------------------
18 * Browser.Request - (*object*) The XMLHTTP object or equivalent.
20 Browser.exec {#Browser:Browser-exec}
21 ------------------------------------
23 Executes the passed in string in the browser context.
25 ### Example:
27         Browser.exec('alert("Moo!");');
30 Deprecated {#Deprecated}
31 ========================
33 ### User Agent detection
35 The functionality described below uses User Agent detection (either the UA string or platform string) to determine the correct values. You are encouraged to use other ways of reaching your goal, like feature detection (`Browser.Features`, your own or [has.js][]), progressive enhancement (the act of having the least compatible features "on top", so the other features still work) and/or graceful degredation (building with all features, but tweaking to have non-compatible things "fall back").
37 #### See also:
39 [MDN about Browser detection using the user agent][]
41 [has.js]: https://github.com/phiggins42/has.js
42 [MDN about Browser detection using theu ser agent]: https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent
44 Browser.name {#Browser:Browser-name}
45 ------------------------------------
47 **Important note:** These properties are deprecated since MooTools 1.5, and are only available in the 1.4-compatibility version.
49 'Browser.name' reports the name of the Browser as string, identical to the property names of the following Boolean values:
51 * Browser.ie - (*boolean*) True if the current browser is Internet Explorer.
52 * Browser.firefox - (*boolean*) True if the current browser is Firefox.
53 * Browser.safari - (*boolean*) True if the current browser is Safari.
54 * Browser.chrome - (*boolean*) True if the current browser is Chrome.
55 * Browser.opera - (*boolean*) True if the current browser is Opera.
57 In addition to one of the above properties a second property consisting of the name and the major version is provided ('Browser.ie6', 'Browser.chrome15', ...).
59 If 'Browser.chrome' is True, all other possible properties, like 'Browser.firefox', 'Browser.ie', ... , will be `undefined`.
61 ### Example:
63         alert(Browser.name); // Alerts "ie" in Internet Explorer, "firefox" in Mozilla Firefox, "chrome" in Google Chrome, "safari" or "opera".
65         if (Browser.ie){
66                 // This code will only run in IE
67         }
69         if (Browser.firefox2){
70                 // This code will only run in Firefox 2
71         }
73         if (Browser.ie6 || Browser.ie7){
74                 // Please upgrade your browser
75         }
77 If an IE document is set to backward compatibility mode using the X-UA-Compatible header, then the Browser object is treated as if the earlier version of the browser is running.
79 ### Browser.ie in the compatibility build:
81 In the compatibility build, for IE>=11, `Browser.ie` will remain `undefined`. See below:
83 The primary use of `Browser.ie` is activating "legacy code", such "legacy code" is no longer required in more recent versions of Internet Explorer (and may not even work anymore). Changing `Browser.ie == true` for modern IE (IE >= 11) in the compatibility build would do more harm than good, even though it's technically correct. Since we did not want to break existing projects that have come to rely on `Browser.ie` not being true for the newer version(s) of IE, the compatibility build will not set `Browser.ie` for these versions of IE. However, `Browser.ie11` will work correctly and `Browser.name` will equal "ie".
85 Browser.version {#Browser:Browser-version}
86 ------------------------------------------
88 **Important note:** The use of this feature is deprecated and it will be moved to a compatibility-only version in the future.
90 'Browser.version' reports the version of the Browser as number.
92 ### Example:
94         alert(Browser.version); // Alerts '3.6' in FireFox 3.6.13
96 Browser.Platform {#Browser:Browser-Platform}
97 --------------------------------------------
99 **Important note:** The *Browser.Platform* object is deprecated since MooTools 1.5, and is only available in the 1.4-compatibility version.
101 * Browser.Platform.mac - (*boolean*) True if the platform is Mac.
102 * Browser.Platform.win - (*boolean*) True if the platform is Windows.
103 * Browser.Platform.linux - (*boolean*) True if the platform is Linux.
104 * Browser.Platform.ios - (*boolean*) True if the platform is iOS.
105 * Browser.Platform.android - (*boolean*) True if the platform is Android
106 * Browser.Platform.webos - (*boolean*) True if the platform is WebOS
107 * Browser.Platform.other - (*boolean*) True if the platform is neither Mac, Windows, Linux, Android, WebOS nor iOS.
108 * Browser.Platform.name - (*string*) The name of the platform.
110 Browser.Plugins {#Browser:Browser-Plugins}
111 ------------------------------------------
113 **Important note:** The *Browser.Plugins* object is deprecated since MooTools 1.5, and is only available in the 1.4-compatibility version.
115 * Browser.Plugins.Flash - (*object*) - An object with properties corresponding to the `version` and `build` number of the installed Flash plugin. Note: if flash is not installed, both `Browser.Plugins.Flash.version` and `Browser.Plugins.Flash.build` will return zero.
116 * Browser.Plugins.Flash.version - (*number*) The major version of the flash plugin installed.
117 * Browser.Plugins.Flash.build - (*number*) The build version of the flash plugin installed.
119 Browser.Engine {#Browser:Browser-Engine}
120 ----------------------------------------
122 **Important note:** The *Browser.Engine* object is deprecated since MooTools 1.3, and is only available in the 1.2-compatibility version.
124 ### Engine:
126 * Browser.Engine.trident - (*boolean*) True if the current browser uses the trident engine (e.g. Internet Explorer).
127 * Browser.Engine.gecko - (*boolean*) True if the current browser uses the gecko engine (e.g. Firefox, or any Mozilla Browser).
128 * Browser.Engine.webkit - (*boolean*) True if the current browser uses the webkit engine (e.g. Safari, Google Chrome, Konqueror).
129 * Browser.Engine.presto - (*boolean*) True if the current browser uses the presto engine (e.g. Opera 9).
130 * Browser.Engine.name - (*string*) The name of the engine.
131 * Browser.Engine.version - (*number*) The version of the engine. (e.g. 950)