<?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>Robertdot, A Web Design Blog &#187; Firefox</title>
	<atom:link href="http://robertdot.org/tags/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://robertdot.org</link>
	<description>A web design blog for designers that develop or developers that design.</description>
	<lastBuildDate>Fri, 05 Mar 2010 15:59:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Browsers and Form Collection</title>
		<link>http://robertdot.org/2009/02/18/browsers-and-form-collection/</link>
		<comments>http://robertdot.org/2009/02/18/browsers-and-form-collection/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 21:19:09 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Browser Compatibility]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Forms]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://robertdot.org/?p=175</guid>
		<description><![CDATA[
 I&#8217;ve been writing a new form hijacker.  Since this one is a pretty big deal for me, I wanted to make sure it was properly implemented.  I implemented against my interpretation of the HTML 4 specification and did a pretty good job since I&#8217;m exactly compatible with Firefox, Opera, and Internet Explorer [...]]]></description>
			<content:encoded><![CDATA[<p>
 I&#8217;ve been writing a new form hijacker.  Since this one is a pretty big deal for me, I wanted to make sure it was properly implemented.  I implemented against my interpretation of the <abbr title="HyperText Markup Language">HTML</abbr> 4 specification and did a pretty good job since I&#8217;m exactly compatible with Firefox, Opera, and Internet Explorer 8.  Safari, Internet Explorer 6, and Internet Explorer 7 seem to have some bugs.
</p>
<p>
 Safari seems to send the values of un<code>name</code>ed <code>select</code>s, despite these elements being invalid.  So, you may get a query string like <samp>text1=test&amp;=selval</samp> if your <code>select</code> that contained an <code>option="selval"</code> doesn&#8217;t have a <code>name</code>.
</p>
<p>
 Internet Explorer 6 and 7 both mishandle <code>button</code>s.  Internet Explorer 6 sends all <code>buttons</code> with <code>name</code> attributes set, even though it should only send the <code>button</code> if it was clicked.  Internet Explorer 7 doesn&#8217;t send unclicked <code>buttons</code>, but any time Internet Explorer 6 or 7 sends a <code>button</code> it sends the <code>button</code>&#8217;s <code>innerHTML</code> instead of the value.
</p>
<p>
 So, given the deficiencies above, here&#8217;s how to compensate.  If you&#8217;re using PHP, you don&#8217;t need to worry about Safari sending <code>name</code>less <code>select</code>s as PHP seems to ignore them (or at least in <code>parse_str</code>).  If you plan to use <code>button</code>s, never give them names or values.  Use <code>radio</code> controls if you have to do conditional actions based on what the user clicks.
</p>
<p>
 I still have some other testing to do, but these findings should help you cover your bases if you&#8217;re working with forms.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertdot.org/2009/02/18/browsers-and-form-collection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! Updates Graded Browser Support</title>
		<link>http://robertdot.org/2009/01/29/yahoo-updates-graded-browser-support/</link>
		<comments>http://robertdot.org/2009/01/29/yahoo-updates-graded-browser-support/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 16:22:54 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Browser Support]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://robertdot.org/?p=173</guid>
		<description><![CDATA[
 Yahoo! updated it&#8217;s Graded Browser Support yesterday.  The changes involved dropping support for non-Safari browsers on Mac OS X 10.4 and non-Internet Explorer browsers on Windows 2000.  Support for Internet Explorer 8 was added for Windows XP and Windows Vista.


 This has given clout to support Internet Explorer 8 (which is in [...]]]></description>
			<content:encoded><![CDATA[<p>
 Yahoo! updated it&#8217;s <a href="http://yuiblog.com/blog/2009/01/28/gbs-update-20090128/">Graded Browser Support</a> yesterday.  The changes involved dropping support for non-Safari browsers on Mac OS X 10.4 and non-Internet Explorer browsers on Windows 2000.  Support for Internet Explorer 8 was added for Windows XP and Windows Vista.
</p>
<p>
 This has given clout to support Internet Explorer 8 (which is in Release Candidate version now) in addition to versions 6 and 7.  Here&#8217;s hoping Microsoft forces Internet Explorer 8 upgrades now that version targeting has been implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertdot.org/2009/01/29/yahoo-updates-graded-browser-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Do Modern Web Design</title>
		<link>http://robertdot.org/2007/01/12/how-to-do-modern-web-design/</link>
		<comments>http://robertdot.org/2007/01/12/how-to-do-modern-web-design/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 14:42:37 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://robertdot.org/2007/01/12/how-to-do-modern-web-design/</guid>
		<description><![CDATA[
 I&#8217;ve been trying to figure out the best way to explain how to do modern, semantic, standards compliant web design.  I&#8217;ve been trying to make the point to my current protege that one should first look at a website like a term paper and move on from there.  I&#8217;ve formulated a method [...]]]></description>
			<content:encoded><![CDATA[<p>
 I&#8217;ve been trying to figure out the best way to explain how to do modern, semantic, standards compliant web design.  I&#8217;ve been trying to make the point to my current protege that one should first look at a website like a term paper and move on from there.  I&#8217;ve formulated a method now that I&#8217;d like to outline.
</p>
<p>
 I once described how I see web design as a left brain plus right brain task.  However, <a href="http://www.alistapart.com/articles/grokwebstandards">a new A List Apart article</a> called <cite>Grok Web Standards</cite> breaks it down even more, suggesting that a web designer must think like a writer, artist, and engineer.  The article inspired me to write the steps I think web designers should take to making a site.
</p>
<p>
 I must say now that I seriously doubt anyone will ever work this way.  It relies on the idea that content is given to the designer first.  Rarely, if ever, will a client give you content without seeing a design.  This is unfortunate because the goal of a website is to communicate a point.  Looking pretty is the icing.  You won&#8217;t be able to bake a cake without letting the client taste the icing first until you have a very good reputation.  However, I hope my steps are written well enough that, if need be, designs can be done first.
</p>
<h2>How To Do Modern Web Design</h2>
<ol>
<li>
<h3>Understand Your Content</h3>
<p>
   Content is king. Before you touch an editor, read your content and understand it.  Once you understand what you want to present, it becomes easier to mark up and will give you ideas on how you want to present the content to the user.  Make a mental outline of what is in the content to help make decisions.  To be clear, <q>content</q> does not just mean the text on the page.  Content includes navigation and footer information as well as regular page content and images.
  </p>
</li>
<li>
<h3>Format Your Content</h3>
<p>
   The first goal of a site (web apps excluded) should be to present a message in a clear manner.  The best way to do this is to make sure your markup is structured and semantic.  I like to think of it as manually marking up a term paper or essay.  Term papers must be clearly arranged and defined in logical sections.  Lists should be presented as lists, paragraphs as paragraphs, and headings as headings.
  </p>
<p>
   Every designer should have some boilerplate to work with.  That is, having a very simple <abbr title="Hypertext Markup Language">HTML</abbr> template with basic elements (e.g. <code>DOCTYPE</code>, <code>head</code>, <code>title</code>, <code>body</code>, and any other basic elements you usually work with) will save you a few minutes up front and allow you to get down to business.  <a href="http://smultron.sf.net">Smultron</a>, for example, has this built in.  If you don&#8217;t, write a basic, empty HTML document.  Don&#8217;t include stylesheets yet.
  </p>
<p>
   To qualify the previous paragraph, boilerplate is only really needed if you want to validate as you go.  If you trust your ability to write valid <q>disembodied</q> markup, just bang out the markup in a text editor without the rest of the code.  It&#8217;s how I&#8217;m writing this post since it&#8217;s going to be injected into a design that has the rest of the code.  In the end, you might save some time by not using boilerplate (e.g. if you have tons of pages that will need extra elements inserted during step four below).  For the beginners, though, understanding the document structure will be more useful than the time saved by skipping out on it.
  </p>
<p>
   Your task is to turn your content into something logical, legible, and semantic.  Use your understanding of the content to create a document.   Based on your mental outline, use headings with the correct level (typically the document title should be the first level heading, for example), lists, paragraphs, blockquotes, tables for tabulated data.  Give emphasis, citations, and hyperlinks.  Front load your lists if you need to.  <strong>Don&#8217;t</strong> use divisions, fonts, or styles.  <strong>Do</strong> rely on the browser&#8217;s built in formatting.  Default styles are well thought out by the browser maker.  You just want to make sure your content makes sense.  Yes, it looks boring, but it also looks clean.  When you view your document in a browser with no stylesheets, it should make sense when you try to read it.
  </p>
</li>
<li>
<h3>Design For Your Content</h3>
<p>
   By now, you should be pretty intimate with the content.  You should have a clear idea about what the content is about.  This will allow you to create a design that helps present that content in a truthful manner.  Take what you know about your content and mockup something that can present it well.  I suggest using Photoshop to work on mockups at this point.  This will keep you from having to write a big stylesheet when you don&#8217;t know if you need it.
  </p>
<p>
   Also, focus on usability.  People that come to this site have no knowledge of how you intended them to use it.  They have certain knowledge about the way the web usually works.  It&#8217;s best to take that into consideration.  If you break from tradition, you need to make it obvious how you intend the user to interact with the site.
  </p>
<p>
   After you are certain that the content is accurately represented and the design is usable, then worry about aesthetics.
  </p>
<p>
   Typically, clients will want to approve a design.  So, make a good composite to show off.  You may even want to do a little HTML and drop a full-sized composite into a browser so the client can get a feel of how it would look.
  </p>
<p>
   If it turns out that you have to do this step first, you should have an idea about what sort of content the client wants to be on his site.  You may have to use your imagination a little more.  Don&#8217;t worry, though.  This is where most people have to start, and I believe starting here can still produce a great site, even if it isn&#8217;t the most ideal place to start.
  </p>
</li>
<li>
<h3>Start Merging Content and Design</h3>
<p>
   Open your basic document in FireFox, Opera, or Safari.  Since these browsers basically agree with one another, this will help you start with a standards compliant site.  Now is when you want to start working on your stylesheets.
  </p>
<p>
   Start coding your stylesheet based on what you already have.  Before, people misused tables to create designs.  Using web standards, people tend to get <q><code>div</code> diarrhea</q>.  Instead of using elements that exist, people put <code>div</code>s around everything whether they need it or not. So, I suggest making creative use of headings, navigation lists, and paragraphs to trim down your stylesheet as much as possible.
  </p>
<p>
   The best place to start is by throwing out some of the default formatting.  I know I just said it was well thought out.  It still is.  It just isn&#8217;t well thought out for your design.
  </p>
<p>
   The first part of my main stylesheet clears margins, paddings, and borders (i.e. <code>*{margin:0px; border:0px; padding:0px;}</code>).  From there, it&#8217;s the designers job to figure out the best proximity.  It also forces the designer to take a better look at default behavior and hopefully start coding it out (or coding it in) to have well thought out alignment and contrast, which makes cross-browser compatibility a little easier to achieve.
  </p>
<p>
   As you go, you will probably find that you need a <code>div</code> here and there to help represent a certain aspect of your design.  For example, I like my designs centered on the page.  In HTML 4, the best way to do this is a <code>div</code> that has <code>margin: auto</code> wrapped around all the content (though in real <abbr title="Extensible Hypertext Markup Language">XHTML</abbr>, the <code>html</code> and <code>body</code> elements can be used to achieve the same ends with no extra markup).
  </p>
<p>
   So, add extra <code>div</code>s when you absolutely need them, and make sure to either code in or code out default styles.  Be creative, though.  It&#8217;s your job.  Usually the easiest solution is not the best.
  </p>
</li>
<li>
<h3>Make Sure It Is Accessible</h3>
<p>
   A pretty design is useless if it isn&#8217;t a good design.  Good designs are accessible to the most number of people possible.  So, audit your site and make sure there aren&#8217;t any serious accessibility problems.  Make sure images have meaningful <code>alt</code> tags, form elements have <code>label</code>s, etc.  Don&#8217;t forget niceties like skip to content links.  This section really deserves an article of its own.  So, I won&#8217;t go into much detail.
  </p>
<p>
   Since I&#8217;m on a Mac, I&#8217;ve familiarized myself with browsing web sites with VoiceOver.  While it isn&#8217;t as good as the other web screen readers, it helps me get an understanding of what the page might be like.  I highly suggest this (or some similar testing) be part of the audit if you have access.
  </p>
</li>
<li>
<h3>Debug for Internet Explorer</h3>
<p>
   Internet Explorer 7 was supposed to bring in a new age of standards compatibility.  It didn&#8217;t.  Even if it did, use of Internet Explorer 6 is still rampant.  In the old days, stylesheet hacks were the way to account for differences in browser rendering (fighting bugs with bugs).  Now, though, Internet Explorer has a proprietary concept called <q>conditional comments.</q>
  </p>
<p>
   This is the first proprietary HTML concept Microsoft has created that is worth a damn.  Conditional comments allows the designer to hide or show page content in Internet Explorer based on variables such as browser name or browser version.  So, we create a conditional comment to show our Internet Explorer bug fix stylesheet only to Internet Explorer (e.g. <code>&lt;!--[if lte IE 6.0]&gt; &lt;link rel="stylesheet" type="text/css" href="ie_fixes.css"&gt; &lt;![endif]--&gt;</code>).  No hacks needed.
  </p>
<p>
   Work in Internet Explorer to clear up any layout issues by overwriting your real stylesheet values.  So, if you had a <code>fieldset{border: 1px dotted gray;}</code> in your real styesheet, which causes weird results in Internet Explorer, you can change it by adding <code>fieldset{border: 1px solid gray;}</code> in your Internet Explorer stylesheet.  Don&#8217;t get bent out of shape if things aren&#8217;t one-for-one the same.  Sometimes a reasonable likeness is as good as you can get.
  </p>
</li>
<li>
<h3>Show It To The Client</h3>
<p>
   By now you have a semantic document custom tailored to your client&#8217;s content that is usable, accessible, and hopefully aesthetically pleasing.  You can now show it to the client.  Since you had the forethought to use web standards, you can make changes to every page at once via the few stylesheets you created.  It will save you time and your client money.  Since the code is semantic, search engines can better understand the content and index it properly, which may lead to increased revenue for your client.  Everyone wins.
  </p>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://robertdot.org/2007/01/12/how-to-do-modern-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Crop Circles</title>
		<link>http://robertdot.org/2006/08/28/firefox-crop-circles/</link>
		<comments>http://robertdot.org/2006/08/28/firefox-crop-circles/#comments</comments>
		<pubDate>Mon, 28 Aug 2006 18:06:15 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://robertdot.org/2006/08/28/firefox-crop-circles/</guid>
		<description><![CDATA[
 When you get a bunch of geeks together, weird stuff happens.


 A bunch of Oregon State University geeks got together to make a 220 foot in diameter crop circle of the FireFox logo.
]]></description>
			<content:encoded><![CDATA[<p>
 When you get a bunch of geeks together, <a href="http://lug.oregonstate.edu/index.php/Projects/Firefox/Firefox_Circle">weird stuff</a> happens.
</p>
<p>
 A bunch of Oregon State University geeks got together to make a 220 foot in diameter crop circle of the FireFox logo.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertdot.org/2006/08/28/firefox-crop-circles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla JavaScript RegExp Test Bug</title>
		<link>http://robertdot.org/2005/07/05/mozilla-javascript-regexp-test-bug/</link>
		<comments>http://robertdot.org/2005/07/05/mozilla-javascript-regexp-test-bug/#comments</comments>
		<pubDate>Tue, 05 Jul 2005 13:49:06 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Regular Expressions]]></category>

		<guid isPermaLink="false">http://robertdot.org/2009/01/14/mozilla-javascript-regexp-test-bug/</guid>
		<description><![CDATA[
 There is what some consider to be a bug in Mozilla&#8217;s JavaScript engine. Basically, if you run a regular expression with a global switch (e.g. /x/g), JavaScript remembers the last match position. This causes the RegExp to sometimes validate as true, and sometimes as false (alternatingly). The Mozilla guys say it isn&#8217;t a bug. [...]]]></description>
			<content:encoded><![CDATA[<p>
 There is what some consider to be a bug in Mozilla&#8217;s JavaScript engine. Basically, if you run a regular expression with a global switch (e.g. /x/g), JavaScript remembers the last match position. This causes the RegExp to sometimes validate as true, and sometimes as false (alternatingly). The Mozilla guys say <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=237111">it isn&#8217;t a bug</a>. However, removing the /g solves the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertdot.org/2005/07/05/mozilla-javascript-regexp-test-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
