Fog Creek Software
Discussion Board




Minimum browser list for ASP.NET application

I have an ASP.NET based application that is going through final testing. I'd like to provide a list of browsers (with minimum version numbers) that are known to work with the application. The application is intended to become commercially available so I have little control over which browsers might be required to work with it.

My intention is to publish the list so that a prospect can know whether their particular browser is likely to cause them a problem if they attempt to use the application.

Ideally, I'd like the browser list to cast as wide a net as possible so as to interest the widest audience. However, to keep the amount of browser testing to a realistic level, I don't mind excluding browsers or minimum versions numbers that have minimal usage in the real world.

I am particularly confused about the Netscape/Mozilla/Firefox historical lineup and how these browser names/versions should appear in my final list.

As far as the browser capability to support the application is concerned, it needs to support HTML 4.01, CSS and JavaScript.

Does anyone have a reasonable list of browsers/minimum version numbers that could get me started or pointers to where such a list might be found?

Thanks.

Mike
Saturday, July 03, 2004

Firstly if CSS is integral to your application (i.e. it relies on it to be usable) you will need to be a little more specific about what level of CSS and which particular features you need to support. Browser support for CSS Level 1 is fairly complete across the modern spectrum, Level 2 is patchier. You may need to work out exactly which features you need supported and then compare them witha browser support table (westciv.com have a good one, though I don't remember it being free) zvon.org is also useful.

With Javascript, it really does depend on what you've written. If you've only used IE specific code for example, then you're going to have problems.

On a broader note, have you used ASP.NET page controls heavily? You have to understand how they resond to what MS would term a downlevel browser to see whather portions of your app will still work.

There is unfortunately going to be no substitute for testing. The best that you're going to be able to say is that it supports IE above a certain version, and browsers based on Mozilla above a certain version, being more detailed may confuse the issue. Again, you are going to need to test your app in various browsers and work out the cuttoff point.

You can find most old browsers at browsers.evolt.org.

I can't help pointing out though - didn't you decide what browsers NEEDED supporting before you started coding this app? You're approaching this the wrong way! Work out what your target market is likely to be using and then CODE FOR THAT PLATFORM. If this means using simpler interfaces, less JS, etc. then that's part of your app and you design accordingly.

I wish you luck, as the situation you're in is a potential minefield. If you do want to chat about the implications and ways to streamline your testing process from now, mail me, i'd be happy to talk about it!

Andrew Cherry
Saturday, July 03, 2004

Andrew,

Thanks for that full response and useful links.

I take the point about predicting the browsers of the target users but I'm not sure we will ever be in a position to do that completely.

We intuitively felt that most target users would have Internet Explorer and we use IE 6.0 for our development testing. We do use ASP.NET page controls but generally only in a rudimentary fashion.

We've also tested with Mozilla 1.2.1. We found that, for example, setting the width property on button controls worked fine in IE. But, as you pointed out, the HTML sent to this 'down-level' browser is different and causes the width property of the button to be inoperative in Mozilla. We were able to overcome that by re-locating the width values into the CSS which worked fine for both browsers. That's the sort of maximum level of change we are looking to make to increase the list of compatible browsers if we consider it worthwhile.

As of now, my compatibility list is:

- Microsoft Internet Explorer 6.0 or later.
- Mozilla 1.2.1 or later.

If I can add a couple of others (say Netscape Navigator and Opera) and push the minimum IE version down to 5.5 or 5.0 without too much effort then that will probably be sufficient for our needs.

If anyone has other thoughts on this then I'd be pleased to hear them.

Thanks.

Mike
Saturday, July 03, 2004

I have to agree with Andrew in that you're approaching it the wrong way. "Down-tweaking" for browsers is a tough job. You should always be developing with your lowest common denominators.

First is: are you using a standards compliance indicating DOCTYPE tag? If not, you have to change that immediately, to make sure all modern browsers act in standards compliant ways rather than in quirky ways.

Second is: you're going to find that the wealth of CSS bugs in IE 5.x is going to make you insane, if you're using much CSS at all. It's very important to use IE 5.x as your day to day working browser instead of IE 6.0, if you intend to support it. And, of course, you have to regularly test everything you do in every browser (by regularly, I mean, if you're not firing up all your browsers every time you do something new, it's not often enough).

Third is: you're going to find that the ASP.NET web controls are generally like "pushing rope" for anything but IE. You should probably set up your web.config to tell the web controls to always render HTML 4.0 regardless of browser, via:

<configuration>
  <system.web>
    <browserCaps>
      TagWriter=System.Web.UI.HtmlTextWriter
    </browserCaps>
  </system.web>
</configuration>

Otherwise, elements you think you're getting, you won't be.

Since most developers will be using an OS that ships with IE 6.0 and is incapable of installing older versions, this article will help you run older versions side by side with IE 6.0 (it does work, with the given caveats):

http://www.insert-title.com/web_design/?page=articles/dev/multi_IE

Good luck.

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, July 03, 2004

Design for the most standards compliant browsers (eg Mozilla) and then drop down to the quirks mode for the less compliant browser (eg IE6)

To be honest, I've pretty much given up using IE6 in my day work. I'm currently using Opera 7.5 and Netscape 7 and once things look correct there, I'll check it in IE6 and adjust for quirks.

FG
Saturday, July 03, 2004

Brad / FG,

>> Are you using a standards compliance indicating DOCTYPE tag?

Yes; we use the appropriate DOCTYPE tag to ensure that the browser switches to standards mode. We had to do some tweaking when we switched from 'quirks' mode to 'standards' mode but it is obviously a better way forward and so it is worthwhile for the long term.

>> It's very important to use IE 5.x as your day to day working browser instead of IE 6.0, if you intend to support it. And, of course, you have to regularly test everything you do in every browser (by regularly, I mean, if you're not firing up all your browsers every time you do something new, it's not often enough).

I agree with that; I'm setting up a variety of browsers in our test environment to achieve that.

>> You should probably set up your web.config to tell the web controls to always render HTML 4.0 regardless of browser.

Thanks; that's the most useful tip I've seen in a long time. That could save us many hours of work.

>> To be honest, I've pretty much given up using IE6 in my day work. I'm currently using Opera 7.5 and Netscape 7 and once things look correct there, I'll check it in IE6 and adjust for quirks.

That describes the style of environment I plan to set up for my testing. It sort of confirms that my list of Mozilla, Internet Explorer, Netscape and Opera is a good enough list.

I'm not expecting the 'down-level tweaking' that I need to do to be as difficult as has been hinted at. If it really is very troublesome then I'll simply shorten my 'certified browser' list.

Thanks again.

Mike
Sunday, July 04, 2004

"Design for the most standards compliant browsers"

But which standard? The "de-facto" one (IE6) or the "declared" one ((X)HTML ?.?, CSS ?.0, ECMAScript ...)?

Just me (Sir to you)
Monday, July 05, 2004

What you also have to remember with .Net applications is that  teh .Net server will generate different html (for .net server controls) based on what it believes is the capability of the client's browser.

In my experience,  the generated html code for some controls - asp:panel is one -  is (deliberately?) broken for non-IE browsers.  This is something that I want to test out further, since I am remmmending a shift at work from IE to Firefox.

Use "view source" to see exactly what  is generated.

And, of course, despite your best intentions with standards compliant (X)HTML and CSS markup, VS.Net will hose your markeup .

Ken Ray
Monday, July 05, 2004

Which, of course, is why you override the browserCaps to tell it to treat browsers right, of course.

        <!-- 2003-12-03, Rob Eberhardt - http://slingfive.com/demos/browserCaps/ -->

        <browserCaps>
            <!-- GECKO Based Browsers (Netscape 6+, Mozilla/Firebird, ...) //-->
            <case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)? (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)).*">
                browser=Gecko
                type=${type}
                frames=true
                tables=true
                cookies=true
                javascript=true
                javaapplets=true
                ecmascriptversion=1.5
                w3cdomversion=1.0
                css1=true
                css2=true
                xml=true
                tagwriter=System.Web.UI.HtmlTextWriter
                <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
                    version=${version}
                    majorversion=${major}
                    minorversion=${minor}
                    <case match="^b" with="${letters}">
                        beta=true
                    </case>
                </case>
            </case>
            
            <!-- AppleWebKit Based Browsers (Safari...) //-->
            <case match="AppleWebKit/(?'version'(?'major'\d)(?'minor'\d+)(?'letters'\w*))">
                browser=AppleWebKit
                version=${version}
                majorversion=${major}
                minorversion=0.${minor}
                frames=true
                tables=true
                cookies=true
                javascript=true
                javaapplets=true
                ecmascriptversion=1.5
                w3cdomversion=1.0
                css1=true
                css2=true
                xml=true
                tagwriter=System.Web.UI.HtmlTextWriter
                <case match="AppleWebKit/(?'version'(?'major'\d)(?'minor'\d+)(?'letters'\w*))( \(KHTML, like Gecko\) )?(?'type'[^/\d]*)/.*$">
                    type=${type}
                </case>
            </case>

            <!-- Konqueror //-->
            <case match="Konqueror/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'));\w*(?'platform'[^\)]*)">
                browser=Konqueror
                version=${version}
                majorversion=${major}
                minorversion=${minor}
                platform=${platform}
                type=Konqueror
                frames=true
                tables=true
                cookies=true
                javascript=true
                javaapplets=true
                ecmascriptversion=1.5
                w3cdomversion=1.0
                css1=true
                css2=true
                xml=true
                tagwriter=System.Web.UI.HtmlTextWriter
            </case>            
        </browserCaps>

Richard P
Tuesday, July 06, 2004

*  Recent Topics

*  Fog Creek Home