|
Professional ASP web techniques

Managing Browser Compatibility
Having seen how easy it is to create
dynamic content, we now need to move on to a major thorn in the
side of all Web developers – browser compatibility. It's
sometimes hard to believe that the situation has become as
difficult as it has when we have a 'ruling body' in the shape of
the World Wide Web Consortium (W3C) setting standards for HTML,
scripting language support, page layout styles, and so on.
The problem is that the rate of change of
the technology outstrips any democratic process – even in the
case of the W3C, whose decision-making process is swift compared
to those in most other industries. As fast as one version of
HTML is fixed as a standard, there are new browsers available
that support new effects, new HTML elements, and even new
concepts of how the Web is used. A perfect example is the
so-called 'push' technology, which browser manufacturers have
implemented as 'Channels'. There are several incompatible
systems available, and many are more 'pull' than 'push'.
All this means you have to start making
choices. Which browsers do you support? Which do you disregard?
And how do you provide 'fallback' for older and less capable
browsers? In Chapters 9 and 10 of this book you'll see how we
can measure the proportion of traffic that our site gets from
each browser type. Of course it may be that you get more hits
from one browser because your site doesn't support the other
browser types. If your pages don't work in Netscape Navigator 4,
you won't get a lot of repeat visits from Navigator 4 users...
So, this chapter is devoted to the issues
involved in trying to offer the best cross-platform support for
browsers. We'll look at:
q
An outline of the options available for creating
browser-compatible sites
q
Ways of detecting the different browser makes and
versions
q
Creating and presenting pages that are complex and
attractive, yet still compatible
q
Creating Channel links in Internet Explorer and
Netscape Navigator
We'll begin with a look at the different
issues involved in compatibility, and outline the solutions
available.
Creating Browser-Compatible Sites
The first and most obvious question you
should be asking yourself when you build HTML pages is what
level of features do you intend to incorporate into them? If you
have a particular task to achieve in a page, what's the best way
to go about it?
When you build a Windows 32-bit application
with a programming language like Visual Basic or C++, you
generally don't worry about which particular version of the
operating system your user has (Windows 95, Windows 98, Windows
NT or Windows 2000), or what other software they may have
installed. You just get on and design the interface and the
underlying working parts, stitch it all together, and compile
it.
Of course, creating Web pages has become
easier as more and more tools have become available. At the same
time, however, we keep changing the target browsers that these
tools are aimed at. As fast as one of the Web design programs
gets onto the market, there's a new browser available with
features that are not supported. The goalposts just keep moving.
You have to feel sorry for the people who build these tools
(except for Microsoft who make
one of the two mainline browsers – it's partly their fault).
Which Browser Do I Target?
The end result is that, to at least some
extent, you need to consider which browsers you intend to
support when you build Web pages. You can build a site that is
'designed for Netscape Navigator' or 'best viewed with Internet
Explorer', but this may not be the best way to maximize your
site's potential. Besides, if you're using the site to try and
sell things, telling a visitor that they've got the wrong
browser isn't the best way to start.
The ultimate aim is to design pages that
are as widely compatible as possible. This doesn't mean,
however, that we can't take advantage of the features that the
newer browsers support. We just need to make sure that our pages
fallback
properly, or 'fail gracefully' – especially to provide support
for older browsers that aren't able to incorporate our more
advanced techniques. Fallback is generally accepted to mean that
our pages will use the closest available features of the browser
to provide an equivalent (but possibly degraded) performance,
yet still remain usable.
Other Types Of User Agent
It's very easy to forget that the browser
we use every day isn't the only kind of user
agent that is in use on the Web. The term 'user agent'
was coined to reinforce this fact, because our site may be
visited by a host of applications that are not browsers in any
real sense of the word. Included in this are the delightfully
named crawlers,
robots
and spiders.
These terms describe applications and 'intelligent agents',
which roam the Web following links, creating the indexes for
search engines, or downloading and caching pages for offline
viewing. These will expect our pages to include various kinds of
elements that identify them, such as <META>
tags. We'll look at this whole issue in more detail in Chapter 8
However, there is also a second category of
user agent, more like a browser in nature, which we should make
every effort to support. Visitors who suffer from physical
disabilities often use special user agents that can magnify
parts of your pages, or even convert them into spoken text.
Simply making sure that you always provide text equivalents for
graphics and links in your pages makes all the difference to
these visitors – make a point of including the ALT
and/or TITLE
attributes in your code wherever you can.
Browser Market Shares
In Chapter 2 we discussed the reasons why
you might decide to use or avoid HTML frames on your site. This
kind of decision will be required for many other features as
well. For example, do you use client-side VBScript and ActiveX
controls, or JavaScript and Java applets? What about the
decision to use a <STYLE>
definition section instead of <FONT>
tags? More to the point, what about the different varieties of
Dynamic HTML?
You might make decisions based on your
favorite environment and your own choice of browser. However,
this is not the best approach in a commercial situation, or even
where you're just aiming for maximum compatibility. Instead, you
need to base the decision on the number of browsers that will
and will not be able to display your pages properly. So how do
you find out which browsers people are using?
The Industry Source - Browser Watch
Probably the best-known source of browser
market share statistics is Browser
Watch (http://browserwatch.internet.com/).
This is a service provided by Dave Garaffa for Internet.com
– a division of the Mecklermedia Corporation that provides
Internet news and resources. Mecklermedia's site gets thousands
of hits every day, and records each visitor's browser version
using the USER-AGENT
string sent in the HTTP header (we met this in Chapter 2):
Using the statistics available from Browser
Watch, combined with those from half a dozen other sites
(including our own) we put together this breakdown of the
approximate percentage of browsers from the two main
manufacturers at the end of 1999. We also show the figures from
mid 1998 for comparison:
|
Browser
|
Share (end
1999)
|
Share (mid
1998)
|
|
Netscape
Navigator 2.x
|
2 %
|
2 %
|
|
Netscape
Navigator 3.x
|
3 %
|
12 %
|
|
Netscape
Navigator 4.x and 5.x
|
35 %
|
38 %
|
|
Internet
Explorer 2.x
|
2 %
|
2 %
|
|
Internet
Explorer 3.x
|
2 %
|
10 %
|
|
Internet
Explorer 4.x and 5.x
|
46 %
|
30 %
|
Bear in mind that this is based mainly on
the number of hits on the Browser Watch-monitored pages, and is
by no means the same for all sites. For example, the Wrox Web-Developer
site has a far higher percentage of visitors using Internet
Explorer (around 70%), while various academic institutions
(which are often heavily Unix based) provide statistics showing
that anything up to 90% of hits to their sites are from Netscape
browsers. Recent independent industry reports put the overall
market shares at 50% Internet Explorer and 45% Navigator.
The Two Main Browser Types
As around 90% of users appear to be using
browsers from one of the two main manufacturers, Microsoft and
Netscape, we'll concentrate our discussions on these two.
However, remember the other browsers and non-browser user agents
we mentioned earlier: while we're probably unlikely to create
pages aimed solely at, say, the Lynx,Cyberdog or Opera browsers, it doesn't mean that we
should ignore fallback features. You'll see more of this later
in the chapter. What we'll do next is break down the various
browser features into broad categories, so that you can decide
what features to support.
Choosing Broad Feature Levels
As browsers tend to be backwards compatible
(although not necessarily in all features), we can generally
assume that features supported in older browsers will continue
to work on newer versions from the same manufacturer. With this
in mind, we can choose broad feature categories and measure the
approximate likely percentage of all visitors' browsers (or user
agents) that will support each category.
This table shows eleven categories for
Netscape Navigator and Internet Explorer, ranging from simple
basic HTML to the specific features in the latest versions.
Because some 5% of visits are from robots or spiders that simply
extract <META>
information and index the page, we have adjusted the totals to
reflect the approximate percentage of interactive visitors (that
is, people that are surfing your site with a browser). It's
encouraging to see that the overall percentage of browsers that
support 'high-level' features is increasing:
*
Note that the Internet Explorer and Netscape Navigator versions
of Dynamic HTML are not compatible with each other. The two Percentage
figures represent the level of support for each browser, with IE
4 being the first and Navigator the second in each case.
If you're wondering why only 95% of
browsers seem to support basic HTML, remember that some will be
the crawlers, robots, spiders and other user agents we mentioned
earlier. In reality, despite the statistics, you would probably
find that the percentage supporting basic HTML and HTML controls
is close to 100%. Besides, if we don't use this to create our
most basic pages, what are we going to use? And, if you answered
XML to the last question, go to the top of the class. Extensible
Markup Language is an HTML-style language designed to
provide more flexibility in creating all kinds of documents –
not just Web pages. We'll be looking at how we can use XML later
in the book.
So, if we just use the features from HTML
Tables downwards, we can expect almost all visitors to be
able to view our pages. This includes direct text formatting
(for example the <FONT>
and <BASEFONT>
elements), and the standard HTML controls (for example <INPUT>,
<SELECT>,
and so on). As we move up the feature list, the overall
proportion of browsers that won't be able to fully render the
pages increases. The interesting point is that it stays at over
90% right up to the inclusion of client-side JavaScript, as well
as Java applets and frames. So it looks like our earlier
decision to go with frames on our example site was a good one.
The big drop comes when you introduce
ActiveX controls or VBScript (the two tend to go together). In
fact, from this point upwards, you are really forced to decide
which individual browser to support. In particular, the
non-compatible versions of Dynamic HTML make it necessary to
consider different versions of each page if you need to maintain
cross-browser compatibility at this level. This is something
we'll be looking at in a lot more detail later on in this
chapter.
Individual Feature Level Compatibility
While we assume that we can still support
most of our visitors when using frames, and support around
three-quarters of them when using <STYLE>
elements, you should be aware that there are lower-level
compatibility problems still lurking. For example, with the <STYLE>
element, we find that each of the three browsers (IE3, IE4/5 and
Navigator 4/5) supports a different set of individual style
properties, and, when using a <FRAMESET>
element, the FRAMESPACING
attribute is only supported in IE3 and above. However, IE3
doesn't support the BORDERCOLOR
attribute, which Navigator does. In general, though, your page
is likely to still work in much the same way on all browsers
that support a feature like frames or styles, even though the
attribute or property sets may differ.
The World Wide Web Consortium
(W3C) at http://www.w3.org/
publishes documentation that defines the HTML language
standards, but not the support in individual browsers. The Wrox
Press book Instant
HTML Programmers Reference (ISBN 1-861001-56-8) aims to
resolve this deficiency by listing all the elements and
attributes for the three most recent HTML standards, and the
three most recent versions of Internet Explorer and Netscape
Navigator.
Contents
| Next
|