<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>From Accessibility to Zope &#187; Browsers</title>
	<atom:link href="http://blog.mauveweb.co.uk/category/browsers/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mauveweb.co.uk</link>
	<description>experiments in contemporary web development</description>
	<lastBuildDate>Thu, 18 Aug 2011 23:26:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Chrome</title>
		<link>http://blog.mauveweb.co.uk/2008/09/03/google-chrome/</link>
		<comments>http://blog.mauveweb.co.uk/2008/09/03/google-chrome/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 14:22:22 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/?p=161</guid>
		<description><![CDATA[Over the past few months the web browser industry has shifted up a gear. After years of stagnation and limited diversity the market is blossoming, first with Safari opening up to the mass-market of Windows, then Opera 9.5, then Firefox 3 and now Google Chrome. And soon, Internet Explorer 8, which is verging on counting [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months the web browser industry has shifted up a gear. After years of stagnation and limited diversity the market is blossoming, first with Safari opening up to the mass-market of Windows, then Opera 9.5, then Firefox 3 and now Google Chrome. And soon, Internet Explorer 8, which is verging on counting as a real browser (so tacit congratulations for Microsoft are probably in order).</p>
<p>If you look at the <a href="http://www.google.com/chrome/intl/en-GB/features.html">features promised by Google Chrome</a> there's precedent for all of them:</p>
<ul>
<li>One Box for everything &#8211; Opera 9.5 / Firefox 3</li>
<li id="newtab" class="selected">New Tab page &#8211; Opera 9.5</li>
<li id="apps">Application shortcuts &#8211; Mozilla Prism</li>
<li id="tabs">Dynamic tabs &#8211; Opera 9.5</li>
<li id="crash">Crash control &#8211; Internet Explorer 8</li>
<li id="incognito">Incognito mode &#8211; <a href="https://addons.mozilla.org/en-US/firefox/addon/1306">Stealther Firefox extension,</a> InPrivate mode in IE8</li>
<li id="safe">Safe browsing &#8211; Firefox 2, <acronym title="Windows Internet Explorer 7">IE7</acronym>&#8230;</li>
<li id="bookmarks">Instant bookmarks &#8211; Firefox 3</li>
<li id="downloads">Simpler downloads &#8211; Ok, I don't know of a suitable precedent for this.</li>
</ul>
<p>But that's not really the point. What Google have done is cherry-picked the features to adopt in order to paint a clear picture of the way they see the web developing (and they are probably right, not least because they are pouring money into making it develop that way).</p>
<p>I wrote a webrunner (to borrow terminology from Mozilla) way back in 2001 or thereabouts, embedding the Internet Explorer component CHTMLView in a chromeless frame. The merit of the site-focused approach was obvious then even though my implementation was mainly just an exercise in <acronym title="Microsoft Foundation Classes">MFC</acronym>, and it was merely for a forum I used to frequent. The point is that not all webpages are equal. People don't spend most of their web time "browsing": 90% of the time they are just logged into the same sites and applications. Chrome's user interface, architecture, and selection of features seem better prepared for this than any other browser on the market.</p>
<p>Google Chrome is a leap towards a much more minimal browser that knows you aren't running it so that you can use a browser, you're running it so that you can use websites. This web-centric future has been predicted so often, it comes as a shock to see that this is what it feels like, and that other web browser manufacturers have never taken the initiative to fully deliver on this promise.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2008/09/03/google-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE8 actually does not pass Acid2</title>
		<link>http://blog.mauveweb.co.uk/2008/02/12/ie8-actually-does-not-pass-acid2/</link>
		<comments>http://blog.mauveweb.co.uk/2008/02/12/ie8-actually-does-not-pass-acid2/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 23:45:02 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2008/02/12/ie8-actually-does-not-pass-acid2/</guid>
		<description><![CDATA[I've just been reading the latest goss on Acid3 and I've come across the most wonderfully perverse announcement from Microsoft (this is a few weeks old, but it's not like I regularly read Microsoft blags).
Since announcing that IE8's renderer can pass Acid2, it transpires that they have a Catch-22:
 To have IE8 conform to standards, [...]]]></description>
			<content:encoded><![CDATA[<p>I've just been reading the latest goss on <a href="http://www.webstandards.org/buzz/action/acid3/">Acid3</a> and I've come across <a href="http://blogs.msdn.com/ie/archive/2008/01/21/compatibility-and-ie8.aspx">the most wonderfully perverse announcement from Microsoft</a> (this is a few weeks old, but it's not like I regularly read Microsoft blags).</p>
<p>Since announcing that IE8's renderer can pass Acid2, it transpires that they have a Catch-22:</p>
<p><strong> To have IE8 conform to standards, you have to use a non-standard workaround.</strong></p>
<p>Wow. I'd assumed Microsoft knew what standards were but couldn't seem to achieve compliance. Not so! Turns out they can achieve compliance but they don't know what web standards are!</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2008/02/12/ie8-actually-does-not-pass-acid2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>application/javascript in IE</title>
		<link>http://blog.mauveweb.co.uk/2008/01/20/applicationjavascript/</link>
		<comments>http://blog.mauveweb.co.uk/2008/01/20/applicationjavascript/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 23:16:11 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2008/01/20/applicationjavascript/</guid>
		<description><![CDATA[The application/javascript MIME type has stopped working in my copies of Internet Explorer (6 and 7). Both now silently ignore scripts linked with type=&#34;application/javascript&#34;, which is as far as I have since determined the behaviour most people experience. Indeed I've only found very sketchy reports of it working at all.
Because I had no idea I [...]]]></description>
			<content:encoded><![CDATA[<p>The <code>application/javascript</code> <acronym title="Multipurpose Internet Mail Extension">MIME</acronym> type has stopped working in my copies of Internet Explorer (6 and 7). Both now silently ignore scripts linked with <code>type=&quot;application/javascript&quot;</code>, which is as far as I have since determined the behaviour most people experience. Indeed I've only found very sketchy reports of it working at all.</p>
<p>Because I had no idea I was unique in being able to experience scripts linked in the <a href="http://www.rfc.org.uk/cgi-bin/lookup.cgi?rfc=rfc4329"><acronym title="Request For Comments">RFC</acronym>-compliant</a> and <acronym title="Internet Assigned Numbers Authority">IANA</acronym>-approved way, I have used this <acronym title="Multipurpose Internet Mail Extension">MIME</acronym> type on quite a few sites. So it's good news, because I would never have spotted this otherwise. Happily, most of these sites are not yet deployed, and the rest only use Javascript for very trivial polish. There now begins a hunt to replace <code>application/javascript</code> with <code>text/javascript</code> on all my sites.</p>
<p>Obviously, I'm at a loss to explain why Microsoft has failed to offer a consistent platform for development and I feel quite aggrieved about it. If I hadn't already boycotted Internet Explorer this would be a pretty good reason to start.</p>
<p>On the assumption that some other piece of software has by accident or design disabled &#8211; or had previously enabled &#8211; <code>application/javascript</code>, this is my list of candidates:</p>
<ol>
<li>Microsoft Outlook 2007, installed for the first time on this computer this week.</li>
<li>Word 2007, also installed this week for the first time.</li>
<li>Some random Windows update I installed last weekend.</li>
<li>Access 2007, installed two weeks ago (but I think I would have noticed sooner if that had caused this change).</li>
<li>Removing something malicious with Spybot. I think it removed one or two dubious registry entries left over from an infection of <a href="http://en.wikipedia.org/wiki/Vundo">Vundo/VirtuMonde</a> last year, so it's unlikely but there's an outside chance of an effect.</li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2008/01/20/applicationjavascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Standards in the Next Generation</title>
		<link>http://blog.mauveweb.co.uk/2007/12/22/web-standards-in-the-next-generation/</link>
		<comments>http://blog.mauveweb.co.uk/2007/12/22/web-standards-in-the-next-generation/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 13:57:03 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2007/12/22/web-standards-in-the-next-generation/</guid>
		<description><![CDATA[With the news this week that Microsoft have a build of Internet Explorer that can pass Acid2, I wonder if I will be forced to eat my words when I suggested recently that Internet Explorer may be falling further behind with web standards, not closing the gap.
Well, we have an interesting opportunity to measure an [...]]]></description>
			<content:encoded><![CDATA[<p>With the news this week that Microsoft have <a href="http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx">a build of Internet Explorer</a> that can pass <a href="http://www.webstandards.org/action/acid2/">Acid2</a>, I wonder if I will be forced to eat my words when I suggested recently that Internet Explorer may be falling further behind with web standards, not closing the gap.</p>
<p>Well, we have an interesting opportunity to measure an aspect of that gap. A quick glance at Bugzilla shows that Gecko was able to generate a correct screenshot by 2006-04-17. Internet Explorer claimed correct rendering on 2007-12-12. The gap is 604 days for Gecko, but obviously, greater for other browsers who have been compliant for much longer.</p>
<p>If Internet Explorer 8 progresses anything like Gecko, there will be a large number of bugs still to fix. If Internet Explorer 8 progresses anything like Internet Explorer historically progresses, most of those bugs won't get fixed. In other words, I'll believe it when I see it. That might not be for 20 months and might not be available on Windows XP. In fact, if the same post on the <acronym title="Internet Explorer">IE</acronym> blog they are keen to excuse themselves from commitment to <em>specific</em> web standards, offering only a general tone in favour of them but excusing themselves with respect to backward compatibility. Taken as a preamble to a compliant-looking Acid2 rendering, I take this to mean, "we may not deliver this in IE8&#8243;. I think everyone hopes they will, but by comparison, some of the Acid2 patches could have been in Firefox 2 but weren't because Firefox 2 was built with a frozen earlier build of Gecko.</p>
<p>Meanwhile, Firefox 3 is drawing closer. My impression is that the gap between 2 and 3 is not huge, which (hear me out!) is because Firefox 2 was excellent and Firefox 3 struggles to improve upon it. The difference for users is relatively minor. Although the new approach to bookmarking is hugely refreshing I think many users, including my parents, just won't get it.</p>
<p>The difference for developers is significantly less marked &#8211; the difference between having functional support for a technology that isn't portable to <acronym title="Internet Explorer">IE</acronym> and having good support for a technology that isn't portable to <acronym title="Internet Explorer">IE</acronym> is not something that will revolutionise the web. In fact, looking at the <a href="http://developer.mozilla.org/en/docs/Firefox_3_for_developers">Firefox 3 for Developers</a> page, the changes are disappointing and even worrying. In some ways it's a return to the browser wars of the late 1990s when competition between browser vendors' extensions demolished the concept of web standards.</p>
<ul>
<li><strong>Support for aspects of HTML5</strong> &#8211; there isn't even a first working draft of HTML5. Although it was the WHATWG spec before, complying with a specification this early will mean that the implementation may not conform to the final specification, by which time, developers will be relying on the non-standard behaviour.</li>
<li><strong>APNG</strong> &#8211; APNG is a Mozilla-sponsored bastardisation of <acronym title="Portable Network Graphics">PNG</acronym> to add animation. It doesn't subscribe to the contract of <acronym title="Portable Network Graphics">PNG</acronym> (which expressly forbids animation) and it isn't negotiable properly because it hijacks <acronym title="Portable Network Graphics">PNG</acronym>'s <acronym title="Multipurpose Internet Mail Extension">MIME</acronym> type, extension and magic. This spells very bad news for the <acronym title="Portable Network Graphics">PNG</acronym> format. In future it will be impossible to tell if a <acronym title="Portable Network Graphics">PNG</acronym> is animated or not, and of course all legacy software will believe not. Despite the best efforts of a number of people, myself included, but most particularly Glenn Randers-Pehrson, Mozilla refused to adopt amendments which would resolve the conflicting standards and the <acronym title="Portable Network Graphics">PNG</acronym> group failed to ratify APNG as an official extension. Although APNG was an ad-hoc solution to offer animated <acronym title="User Interface">UI</acronym> elements in Mozilla, it is being released and promoted as the new web standard for animation and MNG support, although a superior and established format, has been canned.</li>
<li><strong>Microformats</strong> &#8211; Firefox 3 builds-in support for Microformats, which could just as easily be a standalone Javascript library. There's no reason why this should be built-in, except to create a de-facto standard in an <acronym title="	Application Programming Interface">API</acronym> which Mozilla controls. Moreover it promotes microformats as a de-facto standard, which I'm not comfortable with, because I think Microformats are an ugly hack in lieu of a proper solution.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2007/12/22/web-standards-in-the-next-generation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Are Internet Explorer&#039;s days numbered?</title>
		<link>http://blog.mauveweb.co.uk/2007/10/22/are-internet-explorers-days-numbered/</link>
		<comments>http://blog.mauveweb.co.uk/2007/10/22/are-internet-explorers-days-numbered/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 22:55:45 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2007/10/22/are-internet-explorers-days-numbered/</guid>
		<description><![CDATA[Web designers and developers are often heard to pour vitriol in the direction of Internet Explorer. I personally find myself cursing its name perhaps once a week. It's always difficult to believe this is a product Microsoft is still trying to promote.
Contemporary GUI development toolkits require an HTML rendering component: Java has javax.swing.JEditorPane; KDE has [...]]]></description>
			<content:encoded><![CDATA[<p>Web designers and developers are often heard to pour vitriol in the direction of Internet Explorer. I personally find myself cursing its name perhaps once a week. It's always difficult to believe this is a product Microsoft is still <a href="http://www.microsoft.com/windows/products/winfamily/ie/features.mspx">trying to promote</a>.</p>
<p>Contemporary <acronym title="Graphical User Interface">GUI</acronym> development toolkits require an <acronym title="HyperText Markup Language">HTML</acronym> rendering component: Java has javax.swing.JEditorPane; KDE has KHTML; Gtk has GtkHTML. <acronym title="Microsoft Foundation Classes">MFC</acronym> and .NET have Internet Explorer. In this task it is arguably successful: despite being too heavyweight, buggy, and non-portable, it is at least fast and very simple to embed. The applications which use Internet Explorer tend to use it in restricted circumstances so that the largest class of failings &#8211; how it measures up to the wild wild web &#8211; are not encountered.</p>
<p>With Firefox 3 right around the corner and a total radio silence on a potential IE8, it's worth considering how much Microsoft has to do to maintain its web browser's competitiveness.</p>
<p><span id="more-90"></span></p>
<p><strong>Standards</strong></p>
<p>Internet Explorer is of course lacking in standards support. <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> and <acronym title="Scalable Vector Graphics">SVG</acronym> are hugely significant formats entirely unsupported by Internet Explorer. That Internet Explorer supports <acronym title="Really Simple Syndication">RSS</acronym> now is immaterial while <a href="http://blog.mauveweb.co.uk/2006/10/14/why-im-not-sold-on-rss/">nobody knows exactly what <acronym title="Really Simple Syndication">RSS</acronym> is for</a>, but at least it's not a misfeature. New standards are coming thick and fast, faster than Microsoft has been implementing them. The formats Internet Explorer does supports are not fully or correctly integrated with one another and as the collection of web formats continues to flourish this integration problem becomes harder and harder.</p>
<p>For example, Internet Explorer boasts a near-perfect <acronym title="eXtensible Stylesheet Language">XSL</acronym> implementation. However, it dumps and reparses the result document. Because it doesn't support <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> anyway, the resulting tree is interpreted as tagsoup. All of this decouples <acronym title="eXtensible Markup Language">XML</acronym> processing from the final <acronym title="Document Object Model">DOM</acronym> and introduces an array of bugs.</p>
<p>It would be hard for a non-programmer to imagine how  much functionality this kind of integration entails. It's relatively easy to write or licence code which implements individual standards but integrating all of them to form one coherent whole &#8211; as is invariably implied in the specifications themselves &#8211; is much more work.  The following diagram is admittedly somewhat arbitrary in scope, but may illustrate my point:</p>
<p><img src="http://blog.mauveweb.co.uk/wp-content/uploads/2007/10/standard_relatedness1.png" alt="Web Standards Integration in Internet Explorer" /></p>
<p><strong>Bugs</strong></p>
<p>What Internet Explorer does implement is riddled with bugs. These bugs are easy to fix but there are a huge number of them. Whereas the Mozilla project employs Bugzilla to allow users to report bugs, Internet Explorer relies on a testing team, and this is bound to result in fewer bugs being spotted. <acronym title="Cascading Style Sheets">CSS</acronym> is most often cited as an example because the bugs here result in immediately visual results, such the striking failure of Internet Explorer to render the Acid2 test, stemming not only from missing features but the incorrect implementations of many.</p>
<p>However, there are similar bugs throughout the software, documented in <a href="http://css-discuss.incutio.com/?page=IE7">various</a> <a href="http://www.quirksmode.org/bugreports/archives/explorer_7/index.html">sources</a> around the Internet, alas none comprehensive enough to be a first port-of-call. My assertion here is that Microsoft has made some improvement between <acronym title="Internet Explorer 6">IE6</acronym> and <acronym title="Windows Internet Explorer 7">IE7</acronym>, they are unlikely even to be aware of all of the bugs that their software exhibits.</p>
<p><strong>Misfeatures</strong></p>
<p>In many cases Microsoft has deliberately violated the specifications. This is worse than simple omission: Microsoft has started down some paths from which it would be hard to return to a position of standards compliance. Even if they can appreciate that these features are unnecessary and undesirable, they will be disinclined to remove features which they have previously promoted which can cause existing applications and websites to break. This actually makes Microsoft's work harder, because they have to implement <em>more</em> than just standards compliance; they have to support their own misfeatures too, which are certainly not guaranteed to work interoperable with accepted web standards.</p>
<p>Examples include Moniker, which is an unsolicited part of the Microsoft netcode which guesses resource <acronym title="Multipurpose Internet Mail Extension">MIME</acronym> types rather than obeying the <acronym title="HyperText Transfer Protocol">HTTP</acronym> Content-Type header, and conditional comments, under which <acronym title="Cascading Style Sheets">CSS</acronym> and <acronym title="HyperText Markup Language">HTML</acronym> comments are not ignored, but interpreted, and certain statements force Internet Explorer to omit sections of markup.</p>
<p><strong>Embedding</strong></p>
<p>A disproportionate amount of Microsoft's development budget for Internet Explorer has to be spent on continued support of ActiveX. ActiveX connects the browser to arbitrary code. This is useful for the <acronym title="Graphical User Interface">GUI</acronym> toolkit aspect of Internet Explorer but it is detrimental for websites &#8211; not only because it is a source of security vulnerability, but because it is not portable so alternatives have to be found. ActiveX is not in very significant use in the wild, except as a route to browser compromise of course. This is both because of Microsoft's own security restrictions (which have neutered it) and other browsers' refusal to support it (which means it's not portable anyway). Meanwhile Javascript has become much more portable and powerful, such that ActiveX is no longer necessary for most rich web applications.</p>
<p><strong>Developers, Developers, Developers<br />
</strong></p>
<p>Web developers want standalone and even cross-platform versions of Internet Explorer. This is getting less likely: Microsoft is aiming to make new software compatible only with Windows Vista. Microsoft may be entitled not to want to play catch up in this area, but the approach could start to alienate them from web developers (a demographic skewed towards Linux), designers (whose demographic is skewed towards Mac), and everyone else (skewed towards Windows XP&#8230; for the moment).</p>
<p>The internal inconsistencies in Internet Explorer also rule out an extension for developers as good as <a href="http://www.getfirebug.com/">Firebug</a>, for the foreseeable future. There is an Internet Explorer developer toolbar which looks similar but which is vastly inferior and only serves to highlight Internet Explorer's bugginess.</p>
<p>Failing to cater to developers doesn't overcome the requirement for developers to target Internet Explorer&#8230; yet. But it has an effect. Personally, I have converted more than 25 people to Firefox.</p>
<p><strong>Conclusions</strong></p>
<p>Until we can gauge the rate of progress being made towards Internet Explorer 8, it's hard to assess if Microsoft is taking their web browser seriously. Five years of neglect leaves a lot of ground to make up, as described above. But I'd go so far as to predict that Microsoft won't keep up with the competition. They don't have the inclination, and although they have the money it's impossible to instantly convert money into good software (especially when you've got no experience at doing so&#8230; <img src='http://blog.mauveweb.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Internet Explorer 7 is really not all that different to Internet Explorer 6.</p>
<p>If the gulf does continue to widen, some sites &#8211; at first intranet sites, and sites developed by Firefoxies and non-Windows users &#8211; may drop Internet Explorer support to focus on real browsers. At that moment, Internet Explorer's days as a desktop web browser really will be numbered.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2007/10/22/are-internet-explorers-days-numbered/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Misconfigure your browser</title>
		<link>http://blog.mauveweb.co.uk/2007/10/20/misconfigure-your-browser/</link>
		<comments>http://blog.mauveweb.co.uk/2007/10/20/misconfigure-your-browser/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 13:54:05 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2007/10/20/misconfigure-your-browser/</guid>
		<description><![CDATA[Most mistakes web designers make stem from the assumption that the way they are seeing the site in their web browser is the way everyone else sees it. By using uncommon defaults in your web browser, you can ensure that you have left to the default only those aspects of a page which you had [...]]]></description>
			<content:encoded><![CDATA[<p>Most mistakes web designers make stem from the assumption that the way they are seeing the site in their web browser is the way everyone else sees it. By using uncommon defaults in your web browser, you can ensure that you have left to the default only those aspects of a page which you had intended. I call this "misconfiguring" because it is intentionally configuring a web browser to display pages <strong>wrongly</strong>. If the page looks correct with such settings it is probable nothing has been left to chance.</p>
<p>It is common practice to test a web site in various web browsers, but this testing can give a false impression of the compatibility regarding different default settings. This is because almost all browsers have settled on a common out-of-the-box set of defaults. The user is allowed to override these defaults. Fail to anticipate this and your website risks visual problems for some users (perhaps 1% or so, to take a wild guess). Problems include:</p>
<ul>
<li>Character set issues, such as Â£ or the opposite, a broken character symbol (the question mark diamond in Firefox) rather than £.</li>
<li>Specifying a font colour but not a background colour, causing clashes or even invisible text.  Perhaps 10% of websites fail to specify a page background colour but assume that it will default to white.</li>
<li>Linking images which are intended to composite onto white. This looks dreadful onto most other colours.</li>
<li>Copy looking illegible due to tiny serif fonts (sans-serif is more legible on low-resolution screens).</li>
<li>Body font clashing with  image-based buttons and titles: serif and sans-serif fonts rarely mix.</li>
<li>Pale-coloured boxouts. What appears pale is in fact a function of the background colour. A light pink box appears pale on a white background, but very bright on a black background, for which the corresponding effect would be a dark red box.</li>
</ul>
<p>The browser defaults which you may want to change include</p>
<ul>
<li>Character set</li>
<li>Background colour</li>
<li>Text colour</li>
<li>Font style</li>
<li>Font size, although in theory you should avoid specifying this for accessibility reasons.</li>
</ul>
<p>Misconfiguring a web browser is an art. It is perfectly acceptable to use the defaults a user specifies, as long as all of them are respected. While you should feel free to wholly b0rk a browser which you use purely for testing, it is more beneficial to misconfigure the web browser that you use for primary development. For me, this is the same web browser that I use for everything else, Firefox. Therefore the misconfiguration has to be something that isn't wholly unusable to me. More importantly, the new defaults have to be ones that I would be unlikely to use for a website, otherwise I could still rely on my defaults.</p>
<p>Because I tend to use sans-serif fonts, white backgrounds and black, grey or blue text, and <acronym title="Unicode Transformation Format">UTF</acronym>-8 character set, my browser is set to default to serif, coppery-orange text on a mid-grey background. I'm experimenting with <acronym title="International Organization for Standardization">ISO</acronym>-8859-11 (Thai) as my default character set, because this isn't compatible with <acronym title="Unicode Transformation Format">UTF</acronym>-8 nor <acronym title="International Organization for Standardization">ISO</acronym>-8859-15 for the most common problem area: £ and € symbols. It is compatible for <acronym title="American Standard Code for Information Interchange">ASCII</acronym>-range symbols, so try <acronym title="Unicode Transformation Format">UTF</acronym>-16 if you are aiming for perfect incompatibility. I don't specify font-size but I Ctrl-roll my mousewheel on occasion to watch how the site changes at different font sizes.</p>
<p style="border: 1px solid black; padding: 1em; color: #996633; background-color: #cccccc; font-family: serif">So my default browser settings look like this. If I ever see these styles on a page, I know I've failed to specify something.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2007/10/20/misconfigure-your-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE DOM Tables</title>
		<link>http://blog.mauveweb.co.uk/2007/02/19/ie-dom-tables/</link>
		<comments>http://blog.mauveweb.co.uk/2007/02/19/ie-dom-tables/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 13:49:23 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2007/02/19/ie-dom-tables/</guid>
		<description><![CDATA[More outstanding issues are biting me with Internet Explorer 7, specifically these two well-known issues:
IE doesn't render table row elements &#60;tr&#62; unless they are added to an explicit &#60;tbody&#62; element. (The HTML and XHTML DTDs allow &#60;tbody&#62; to be optional/implicit.)
IE doesn't accept XHTML attribute names as XML DOM setAttribute() keys, requiring instead HTML DOM HTMLElement [...]]]></description>
			<content:encoded><![CDATA[<p>More outstanding issues are biting me with Internet Explorer 7, specifically these two well-known issues:</p>
<p><acronym title="Internet Explorer">IE</acronym> doesn't render table row elements &lt;tr&gt; unless they are added to an explicit &lt;tbody&gt; element. (The <acronym title="HyperText Markup Language">HTML</acronym> and <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> DTDs allow &lt;tbody&gt; to be optional/implicit.)</p>
<p><acronym title="Internet Explorer">IE</acronym> doesn't accept <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> attribute names as <acronym title="eXtensible Markup Language">XML</acronym> <acronym title="Document Object Model">DOM</acronym> setAttribute() keys, requiring instead <acronym title="HyperText Markup Language">HTML</acronym> <acronym title="Document Object Model">DOM</acronym> HTMLElement member variable names. (The <acronym title="HyperText Markup Language">HTML</acronym> <acronym title="Document Object Model">DOM</acronym> is defined as subclassing the <acronym title="eXtensible Markup Language">XML</acronym> <acronym title="Document Object Model">DOM</acronym> without overriding these methods.)</p>
<p>I'm now using the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&#038;displaylang=en">Internet Explorer Developer Toolbar</a>, which comprises a few of the features of Firefox's <a href="https://addons.mozilla.org/firefox/60/">Web Developer Toolbar</a> and <a href="http://www.getfirebug.com/">Firebug</a> extensions. It's really helpful in diagnosing these <acronym title="Internet Explorer">IE</acronym> issues.</p>
<p>Looking through some of the unofficial <a href="http://www.quirksmode.org/bugreports/archives/explorer_7/index.html">bug lists for Internet Explorer</a>, you start to get an idea of just how far behind Internet Explorer still is.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2007/02/19/ie-dom-tables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subtle IE tab order glitch</title>
		<link>http://blog.mauveweb.co.uk/2007/02/16/subtle-ie-tab-order-glitch/</link>
		<comments>http://blog.mauveweb.co.uk/2007/02/16/subtle-ie-tab-order-glitch/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 12:27:18 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2007/02/16/subtle-ie-tab-order-glitch/</guid>
		<description><![CDATA[In Internet Explorer, both 6 and 7, automatically reloading an &#60;iframe/&#62; breaks the tab order and makes IE focus the address bar instead of the next field when you tab.
I wonder if anyone else has spotted this; it seems triflingly minor, but the client is so keen on tab order working correctly that they want [...]]]></description>
			<content:encoded><![CDATA[<p>In Internet Explorer, both 6 and 7, automatically reloading an &lt;iframe/&gt; breaks the tab order and makes <acronym title="Internet Explorer">IE</acronym> focus the address bar instead of the next field when you tab.</p>
<p>I wonder if anyone else has spotted this; it seems triflingly minor, but the client is so keen on tab order working correctly that they want me to rewrite the &lt;iframe/&gt; with <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> polling.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2007/02/16/subtle-ie-tab-order-glitch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The death of * HTML</title>
		<link>http://blog.mauveweb.co.uk/2006/12/27/the-death-of-html/</link>
		<comments>http://blog.mauveweb.co.uk/2006/12/27/the-death-of-html/#comments</comments>
		<pubDate>Wed, 27 Dec 2006 11:17:15 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2006/12/27/the-death-of-html/</guid>
		<description><![CDATA[As I've now started to look at how some of my sites work in IE7, I discover that the main thing that has gone wrong is that the hack where you prepend CSS selectors with * html is now disabled. Of course I could have found this out six months ago but frankly, learning the [...]]]></description>
			<content:encoded><![CDATA[<p>As I've now started to look at how some of my sites work in <acronym title="Windows Internet Explorer 7">IE7</acronym>, I discover that the main thing that has gone wrong is that the hack where you prepend <acronym title="Cascading Style Sheets">CSS</acronym> selectors with <code>* html</code> is now disabled. Of course I could have found this out six months ago but frankly, learning the particular quirks of an as-yet-unreleased and sickeningly broken user agent is not something I am going to invest time in.</p>
<p>Obviously, this means that for any site that <acronym title="Windows Internet Explorer 7">IE7</acronym> breaks, it is failing on the standards-compliant <acronym title="Cascading Style Sheets">CSS</acronym>. But equally, as I noted before, not as many sites break as was expected. So that's pretty good news.</p>
<p>But for the sites that do break, and future sites in general, the situation is a mess. It's now necessary to split <acronym title="Windows Internet Explorer 7">IE7</acronym> styles into different, conditionally included files, either by selecting on <acronym title="User Agent">UA</acronym> (which is unreliable) or use a <em>gut-wrenchingly sickening</em> <acronym title="Internet Explorer">IE</acronym> misfeature called "conditional comments". <acronym title="Internet Explorer 6">IE6</acronym> rules need to be moved too, as <acronym title="Windows Internet Explorer 7">IE7</acronym> will have significant common ground with <acronym title="Internet Explorer 6">IE6</acronym> and you don't want to have to maintain two copied of any rule that is shared.</p>
<p>Having rules split between different files makes it harder to work with, because in <acronym title="Cascading Style Sheets">CSS</acronym> you need to literally compare selectors to work out the precedence. <code>* html</code> is much easier to work with because you can place your <acronym title="Internet Explorer">IE</acronym> rule right next to your real browser rule, and easily cross-reference the differences. Or if you change the real-browser rule, you can also amend the <acronym title="Internet Explorer">IE</acronym> rule at the same time. More annoyingly, if you already have a tidy collection of <acronym title="Cascading Style Sheets">CSS</acronym> stylesheets importing one another with the <code><span style="color: #a1a100;">@import </span></code> statement, you have to either collect your <acronym title="Internet Explorer">IE</acronym> styles in one file, or duplicate the tree for <acronym title="Internet Explorer">IE</acronym>. Neither is very maintainable. The <code><span style="color: #a1a100;">@import </span></code> statement is not very useful anyway though, because <acronym title="Cascading Style Sheets">CSS</acronym>'s precedence rules don't allow <acronym title="Cascading Style Sheets">CSS</acronym> to be modularised in an elegant way.</p>
<p>In Microsoft's defence, they are looking for a painless route to standards compliance that in all honestly does not exist. But I apportion the blame entirely to them, for two reasons. First, it was they who let the situation regarding standards compliance get so out of hand first; in effect, they are five years too late in starting to take this course of action. Secondly, bundling <acronym title="Internet Explorer">IE</acronym> with Windows is one of the most devastatingly damaging things they have ever done. The cost to businesses worldwide could run into hundreds of millions, if not billions of dollars, and this money is not even paying Microsoft shareholders: it's being flushed down the toilet. Web designers to some extent profit from it at the expense of other businesses, but even so, we would rather not have to do it because we would then simply be able to achieve more. We would probably charge more or less the same, but all sites would be stunningly beautiful with rich interactivity.</p>
<p><acronym title="Cascading Style Sheets">CSS</acronym>, has its own problems, of course, but these would have been very hard to predict all that time ago when it was drawn up:</p>
<ul>
<li>Selector-based stylesheets cannot be refactored without reference to a schema for the source document.</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> cannot deal with varying capabilities across implementations.</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> cannot be modularised, because selectors can very easily collide and supercede each other, dependent on the way the selector is described rather than the structure of the module. For modularised <acronym title="HyperText Markup Language">HTML</acronym>/CSS 'components', you really need to prevent styles being overriden unless explicitly requested.</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> units cannot be specified as an arithmetic operation on unknowns, such as '(1em-3px)'. This means dimensions measured in ems (useful for text) are incompatible with lengths measured in pixels (useful for images).</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> has insufficient control of vertical positioning. The basic operations available are "the vertical order is the same as the document order", "x is at this vertical position", and with a bit of creativity with floating blocks, "x follows all of these", plus one modifier, "all my descendants lay out relative to me".</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> doesn't allow constants. This means that you have to repeat constants, say colour codes or border styles, and change them in more than one place.</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> has some bizarre quirks. For example, it doesn't include padding in the width and height dimensions, so if you increase the padding, you have to decrease the width correspondingly. <acronym title="Internet Explorer">IE</acronym> for years did the opposite, which is totally wrong but much more intuitive.</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> selectors are lacking tidy disjunctions and assertions, things that exist nicely in XPath. It's possible to work around these, but not necessarily succinctly.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2006/12/27/the-death-of-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE7 scores a point over FF2</title>
		<link>http://blog.mauveweb.co.uk/2006/12/08/ie7-scores-a-point-over-ff2/</link>
		<comments>http://blog.mauveweb.co.uk/2006/12/08/ie7-scores-a-point-over-ff2/#comments</comments>
		<pubDate>Fri, 08 Dec 2006 18:46:48 +0000</pubDate>
		<dc:creator>mauve</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.mauveweb.co.uk/2006/12/08/ie7-scores-a-point-over-ff2/</guid>
		<description><![CDATA[If anyone's keeping score, I've found my first snippet of code which IE7 handles flawlessly but FF2 does not.
It's code for creating multiple recipient email fields with Javascript, such that creates as many as necessary and keeps the last field spare. Specifically this code is for deleting fields, which happens when you backspace or delete [...]]]></description>
			<content:encoded><![CDATA[<p>If anyone's keeping score, I've found my first snippet of code which <acronym title="Windows Internet Explorer 7">IE7</acronym> handles flawlessly but FF2 does not.</p>
<p>It's code for creating multiple recipient email fields with Javascript, such that creates as many as necessary and keeps the last field spare. Specifically this code is for deleting fields, which happens when you backspace or delete from a field which you've already emptied. This is modelled on how Thunderbird/Icedove's compose window behaves.</p>
<pre><code><span style="color: #003366; font-weight: bold;">function</span> autoCompleteContact<span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> event=<span style="color: #66cc66;">&#40;</span>window.<span style="color: #006600;">event</span><span style="color: #66cc66;">&#41;</span>?window.<span style="color: #006600;">event</span>:e;
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> target=<span style="color: #66cc66;">&#40;</span>window.<span style="color: #006600;">event</span><span style="color: #66cc66;">&#41;</span>?window.<span style="color: #006600;">event</span>.<span style="color: #006600;">srcElement</span>:e.<span style="color: #006600;">target</span>;

&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//catch backspace or delete on an empty field as deleting the field</span>
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>target.<span style="color: #006600;">value</span> == <span style="color: #3366CC;">''</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>e.<span style="color: #006600;">keyCode</span> == <span style="color: #CC0000;">8</span> || e.<span style="color: #006600;">keyCode</span> == <span style="color: #CC0000;">46</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//don't delete the last field if it's empty</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>target == recips<span style="color: #66cc66;">&#91;</span>recips.<span style="color: #006600;">length</span> <span style="color: #CC0000;">-1</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span>;

&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//find the container element for all recipient input fields</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> recips_container=document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'recipients'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!recips_container<span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span>;

&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//Javascript doesn't seem to provide an array remove()</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//so do effectively newrecips=recips.remove(target) manually</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> newrecips=<span style="color: #003366; font-weight: bold;">new</span> Array;
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i=<span style="color: #CC0000;">0</span>; i &lt; recips.<span style="color: #006600;">length</span>; i++<span style="color: #66cc66;">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>recips<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span> != target<span style="color: #66cc66;">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newrecips.<span style="color: #006600;">push</span><span style="color: #66cc66;">&#40;</span>recips<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//Don't remove the last field</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>newrecips.<span style="color: #006600;">length</span> &gt; <span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; recips_container.<span style="color: #006600;">removeChild</span><span style="color: #66cc66;">&#40;</span>target<span style="color: #66cc66;">&#41;</span>;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; recips=newrecips;
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//Focus the last field</span>
&nbsp; &nbsp; &nbsp; &nbsp; recips<span style="color: #66cc66;">&#91;</span>recips.<span style="color: #006600;">length</span><span style="color: #CC0000;">-1</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #000066;">focus</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>

&nbsp; &nbsp; ...</code></pre>
<p><acronym title="Windows Internet Explorer 7">IE7</acronym> does it perfectly, FF2's layout breaks and it starts showing the contents of the INPUT elements in the wrong place.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.mauveweb.co.uk/2006/12/08/ie7-scores-a-point-over-ff2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

