A recent project was developed using Internet Explorer 5.5 as
the browser of choice. Aware of browser incompatibilities,
viewing the web page using three other commonly used browsers,
Internet Explorer 4.0, Netscape Navigator 6.1, and Netscape
Navigator 4.7 revealed some 'distortions'. This was mainly due
to whether or not a particular browser could interpret style
sheets, and if so how the style sheets were interpreted.
It was apparent that the page code either needed to be
downgraded to the 'lowest common denominator' or alternative
versions of the web page were needed for Netscape 6.1, Netscape
4.7, and Internet Explorer 4.0. Therefore, a version optimized
for Netscape 6.1 was created, as well as another version
compatible for both Netscape 4.7 and Internet Explorer 4.0.
(This was before Internet Explorer 6.0 and Netscape 6.2 were
available.)
Review of several current web sites and textbooks on Javascript
presented different approaches to writing script to first detect
a user's browser, and then depending on the browser and version,
to redirect the user to a specific page. In this particular
case, none of the recommendations or solutions were what was
needed. After a good deal of testing and re-testing, the
following script examples were assembled.
Below are five different examples / variations of some
Javascript that is to be placed on a page that is optimized for
Internet Explorer 5.5. These scripts will then automatically
detect the visitor's browser and version, and then automatically
direct the particular browser in one of three directions. They
are;
If a visitor is using Internet Explorer 5.5, to remain on the
current page.
If a visitor is using Netscape 6.1, to be redirected to a page
that has been optimized for Netscape 6.1.
If a visitor is using Internet Explorer 4.0 or Netscape 4.7, to
be redirected to a third page that has been written specifically
for either of these browser versions.
Explanatory discussion follows the script examples.
#1
----------------------------------------------------------------
#2
---------------------------------------------------------------
#3
---------------------------------------------------------------
#4
---------------------------------------------------------------
#5
---------------------------------------------------------------
Any of these five different scripts can be utilized. These have
been compiled after many attempts at using other suggested
scripts that either were too limited, were not applicable to
identifying version 5 and higher browsers, or just did not seem
to work as anticipated.
All these scripts are a series of conditional statements, which
are read by the visitor's browser when the web page 'ie55.htm'
is loaded.
1. The browser reads the first statement and if it is Netscape
6.1, it is redirected to the page written specifically for
Netscape 6.1. If not,
2. The browser reads the next statement and if it is Netscape
4.7, it is redirected to the page written for the 'number 4’
version of either Internet Explorer or Netscape Navigator. If
not,
3. The browser reads the next statement and if it is Internet
Explorer 4.0, it too is redirected to the page written for the
'number 4' version of either Internet Explorer or Netscape
Navigator. And lastly,
4. If none of the statements apply, the browser will remain on
the same page that contains the script and proceed to read the
remainder of the page.
Next are several observations made after consulting several
resources (online and in print) and conducting many 'trial and
error' sessions.
Peculiarities encountered that caused difficulties include;
1. Regarding the line that identifies a browser's version number
(navigator.appVersion.indexOf(" ") != -1) Internet Explorer; you
must use "MSIE 4", not "MSIE 4.0", "4", or "4.0". The same is
true whether or not this additional ‘if’ statement,
(navigator.appName.indexOf("Internet Explorer") != -1), is
included as in #1. Use "MSIE 5" to identify Internet Explorer
5.5. **See below for more about Internet Explorer and version
numbers. Version 5.5 does not fall under the category of version
5 or higher.
Netscape Navigator; in this statement either "5.0" or "5" will
work with Netscape 6.1 resulting in directing the browser to the
page optimized for Netscape 6.1. if
(navigator.appName.indexOf("Netscape") != -1) { if
(navigator.appVersion.indexOf("5.0") != -1)
window.location="nn61.htm"; } But in this statement, "5.0" must
be used. "5" results in Netscape 4.7 being directed to the page
optimized for Netscape 6.1 instead of the page optimized for
Netscape 4.7. The reason is unknown. This peculiarity was
discovered through 'trial and error'.
if (navigator.appName.indexOf("Netscape") != -1) { if
(navigator.appVersion.indexOf("5.0") == -1)
window.location="ienn4.htm"; } ** NOTE: Attempting to separate
browsers based upon their version number is not as straight
forward as it might seem. The reason is that both Internet
Explorer 4.0 and Internet Explorer 5.5 have the same version
number of 4! Also Netscape 6.1 has a version number of 5! So
trying to detect and then select browsers based on version
numbers results in confusion. In particular
The version number of '5 and higher' will exclude Internet
Explorer 5.5 The version number of '4 and lower' will include
Internet Explorer 5.5 The version number of '6 and higher' will
exclude Netscape 6.1
2. Regarding the line that identifies a browser's name
(navigator.app.Name.indexOf(" ") != -1)
Internet Explorer; you must use "Internet Explorer",
"Microsoft", or "Microsoft Internet Explorer". "MSIE" is not
recognized.
3. All of these browsers, Netscape 4.7 and 6.1, and Internet
Explorer 4.0 and 5.5, have the same code name of Mozilla.
Therefore these browsers can not differentiated based on their
code name.
Conclusions;
Remember that these scripts are to be placed on the page that
has been optimized for viewing using the Internet Explorer 5.5
browser.
If a Netscape 6.1 browser is being used, the visitor is
automatically redirected to the page that has been optimized for
Netscape 6.1.
If a Netscape 4.7 browser is being used, the visitor is
automatically redirected to the page that has been optimized for
either Netscape 4.7 or Internet Explorer 4.0.
If an Internet Explorer 4.0 browser is being used, the visitor
is automatically redirected to the page that has been optimized
for either Netscape 4.7 or Internet Explorer 4.0.
If none of these three 'if' conditional statements are true, the
browser will remain on the present page and will continue on
with interpreting that page, in this case the page that has been
optimized for Internet Explorer 5.5.
To use these scripts, remember to replace the fictitious pages
"nn61.htm", "ienn4.htm", and "ie55.htm" with your actual pages.
Also if using one of these scripts on a page that is created for
viewing using a browser other than IE 5.5, further adjustments
will be necessary, as well as, then re-testing the script(s).
Remember that some of the other browser types that are in use
include, i.e. AOL, Netscape Navigator 3.0 or lower, Internet
Explorer 3.0 or lower, Opera (various versions), Web TV, Lynx,
Konqueror. All of these are used in small numbers and whether
one wants to address each one of these browsers is an individual
decision.
There are different web sites that contain statistics on browser
usage that can be reviewed. The best source of information on
the actual browsers that are used to view your web site are your
own visitor logs. Check those as they may or may not agree with
other published web statistics.
Obviously Intranets are a special environment and one in which
the pages must be optimized for the particular browser that is
in use on the Intranet machines. This is a much easier situation
to have to contend with.
Unfortunately until the 'browser wars' come to an end and an
'across the board acceptance' of the W3C's guidelines for coding
is the rule, browser incompatibilities will continue to
influence web page construction.
|