I’ve been working with a series of Panel controls to hide and show various sections of a page. Since I’m actively trying to validate the pages, fix errors, and make sure it looks the same between IE and Firefox I happened to notice that the Panel control rendered as a table in Firefox instead of div, which it does in IE. This, of course, pissed me off to no end. So I had to find out why.
It is all because of the wonderful machine.config browserCaps section…which has never been updated since the 1.1 framework was released. It controls if .Net uses the HtmlTextWriter (HTML 4.0) or the Html32TextWriter (HTML 3.2) based on the browsers user agent and some regex magic. Of course Firefox, pretty much all Gecko based browsers, and Apple’s Safari (AppleWebKit) are not included in any of the definitions so by default it uses the Html32TextWriter.
Through a little web searching I’ve found a good section to add into the web.config that adds support for Firefox.
Big thanks to Rob Eberhardt and Chris Maunder, Owen Brady and others
Code below just for my sanity.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <browsercaps> <!-- GECKO Based Browsers (Netscape 6+, Mozilla/Firefox, ...) //--> <!-- Edited by Owen Brady:6-12-05 --> <!-- Edited by Owen Brady:10-07-05 --> <case match="(Gecko/[-d]+)"> browser="Mozilla" cookies="true" ecmascriptversion="0.0" frames="true" isColor="true" javaapplets="true" javascript="true" majorversion="${major}" maximumRenderedPageSize="20000" minorversion="${minor}" preferredImageMime="image/jpeg" screenBitDepth="32" supportsDivNoWrap="false" supportsFileUpload="true" tables="true" type="desktop" version="${version}" <filter> <case match="Gecko/(?'Gecko'd+)"> BrowserBuild=${Gecko} </case> </filter> <filter> <case match="rv:(?'version'(?'major'd+)(?'minor'.[.|w]*))"> majorversion="${major}" minorversion="${minor}" type="Mozilla${major}" version="${version}" ecmascriptversion="1.4" maximumRenderedPageSize="300000" preferredImageMime="image/gif" supportsCallback="true" supportsDivNoWrap="false" tagwriter="System.Web.UI.HtmlTextWriter" w3cdomversion="1.0" <filter> <case with="%{version}" match="^1.[4-9]"> backgroundsounds="true" css1="true" css2="true" javaapplets="true" maximumRenderedPageSize="2000000" preferredImageMime="image/jpeg" screenBitDepth="32" supportsMultilineTextBoxDisplay="true" type="Mozilla${version}" xml="true" </case> </filter> <filter> <case match="Gecko/d+ Firebird/(?'version'(?'major'd+)(?'minor'.d+))|Gecko/d+ Firefox/(?'version'(?'major'd+)(?'minor'.d+))"> backgroundsounds="true" css1="true" css2="true" javaapplets="true" maximumRenderedPageSize="2000000" preferredImageMime="image/jpeg" screenBitDepth="32" supportsMultilineTextBoxDisplay="true" xml="true" version=${version} majorversion=${major} minorversion=${minor} </case> </filter> </case> <case match="m(?'version'd+))"> version=0.${version} majorversion=0 minorversion=${version} </case> </filter> <filter> <case match="^Mozilla/5.0 Galeon/(?'version'(?'major'd+).(?'minor'd+).(?'revision'd+))"> browser=Galeon version=${version} majorversion=${major} minorversion=${minor} revisionversion=${revision} </case> <case match="(Gecko/[-d]+)(?'VendorProductToken' (?'browser'[^/d]*)([d]*)/(?'version'(?'major'd+)(?'minor'.d+)(?'revision'.d+)(?'letters'w*)))"> browser=${browser} version=${version} majorversion=0${major} minorversion=0${minor} revisionversion=0${revision} </case> <case match="(Gecko/[-d]+)(?'VendorProductToken' (?'browser'[^/d]*)([d]*)/(?'version'(?'major'd+)(?'minor'.d+)(?'letters'w*)))"> browser=${browser} version=${version} majorversion=0${major} minorversion=0${minor} </case> </filter> <filter> <case match="Phoenix" with="%{browser}"> browser="Firefox" </case> <case match="Firebird" with="%{browser}"> browser="Firefox" </case> <case match="Mozilla Firebird"> browser="Firefox" </case> <case match="(No IDN) Firefox"> browser="Firefox" </case> <case match="Netscape6" with="%{browser}"> browser="Netscape" </case> <case match="CS 2000 7.0" with="%{browser}"> browser="CS 2000 7.0" version=7.0 majorversion=7 minorversion=0 </case> </filter> </case> </browsercaps> |
Post a Comment