5.4 Detecting the Netscape Navigator Version
NN 2 , IE n/a
5.4.1 Problem
You
want script execution to branch
based on a specific or minimum version of Netscape Navigator.
5.4.2 Solution
For versions prior to Netscape 6, the most easily accessed version
information is at the start of the
navigator.appVersion property value. Starting with Netscape
6, however, the version information is contained in a new property of
the navigator
object: vendorSub. Here's a
function that returns a numeric value of the Navigator version from
any generation:
function getNNVersionNumber( ) {
if (navigator.appName = = "Netscape") {
var appVer = parseFloat(navigator.appVersion);
if (appVer < 5) {
return appVer;
} else {
if (typeof navigator.vendorSub != "undefined") {
return parseFloat(navigator.vendorSub);
}
}
}
return 0;
}
You can use the returned value to establish a global variable that
gets used elsewhere in code execution branch condition statements.
For example, here's how to execute code only if the
browser identifies itself as being compatible with NN 6 or later:
var isNN6Min = getNNVersionNumber( ) >= 6;
...
if (isNN6Min) {
// perform statements for NN 6 or later
}
5.4.3 Discussion
As time goes on, there is a potentially increasing hazard: looking
for any specific browser application name and version may shut out
users whose browsers utilize the very same engines that your code
accepts. All major browser makers, including Microsoft, Netscape
(Mozilla), and Opera, have designed their code to be embedded as
browser functionality in other types of devices. For example, if the
same Gecko engine used in Netscape 6 and
later should find its way into a future handheld device or consumer
appliance, the browser will likely not bear the Netscape name or same
versioning sequence. Of course, this particular engine includes other
properties of the navigator object
(product and productSub) that
identify the Gecko engine and its build version. This is all the more
reason that browser and version branching is less appealing than it
once was, unless you use it to work around known bugs in existing
versions.
5.4.4 See Also
Recipe 5.2 and Recipe 5.3 for additional browser detection tips; Recipe 2.1
for uses of the parseFloat( ) function.
|