<?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>Words, punctuated &#187; Web Browsers</title>
	<atom:link href="http://probertson.com/articles/category/web-browsers/feed/" rel="self" type="application/rss+xml" />
	<link>http://probertson.com</link>
	<description>Thoughts on web development, user-centered design, code, etc. by Paul Robertson</description>
	<lastBuildDate>Tue, 20 Jul 2010 21:29:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mozilla Prism: analysis and comparison to AIR</title>
		<link>http://probertson.com/articles/2008/03/25/mozilla-prism-analysis-and-comparison-to-air/</link>
		<comments>http://probertson.com/articles/2008/03/25/mozilla-prism-analysis-and-comparison-to-air/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 21:54:34 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[User-centered design]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2008/03/25/mozilla-prism-analysis-and-comparison-to-air/</guid>
		<description><![CDATA[I wanted to share a couple of links and some of my thoughts about Mozilla Prism (also here), which (from my understanding) is currently a way to take a browser page and isolate it so that it runs in its own window (and maybe its own process &#8212; not certain about that one) without the [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to share a couple of links and some of my thoughts about <a href="http://wiki.mozilla.org/Prism">Mozilla Prism</a> (also <a href="http://labs.mozilla.com/2007/10/prism/">here</a>), which (from my understanding) is currently a way to take a browser page and isolate it so that it runs in its own window (and maybe its own process &#8212; not certain about that one) without the extra trappings of browser chrome. It&#8217;s been compared with Adobe AIR, and while there are similarities there are certainly differences too.</p>
<p>I missed the initial announcements and only became aware of Prism a couple of weeks ago when I happened on <a href="http://www.mikechambers.com/blog/2007/10/25/mozilla-prism-and-the-disingenuous-web/">a discussion of Prism by Mike Chambers</a> (complete with rather emotional comments on many sides). I can&#8217;t say I agree with everything Mike says there &#8212; it sounds like at the time he wrote it he didn&#8217;t have a complete understanding of what Prism was/is &#8212; although certainly some of the people who commented obviously didn&#8217;t have a great understanding of Adobe AIR. In any case, it&#8217;s an old (by Internet time) post, so I&#8217;m sure nobody in that conversation would want to be held to their stated opinion.</p>
<p>My opinion about Prism is more in line with <a href="http://weblogs.macromedia.com/jd/archives/2008/03/prism_questions.cfm">something JD shared recently</a>, specifically the quote below which I think clarifies the value proposition (and relative merits) of both AIR and Prism:</p>
<blockquote>
<p>For me, the top difference between the Adobe Integrated Runtime and what I currently understand of Mozilla Prism is the balance between creator choice and user choice. AIR lets you create a predictable beyond-the-browser experience; Prism lets the developer indicate how they&#8217;d like the presentation to appear, but the enduser can still modify the markup, scripts and styles they choose to package up in Prism. Two different types of contract between creator and consumer.</p>
<p>Any existing webpage can be repackaged and modified in Prism; any web developer can create desktop-optimized experiences in AIR.</p>
</blockquote>
<p>I think this is very relevant to one example that I&#8217;ve given to explain one of the benefits of AIR. There are now apps that people use in a browser (e.g. GMail), but they use them like a desktop application &#8212; opening them up and keeping them open all day. The user doesn&#8217;t want that browser window to navigate to a different page, and if some web site causes the browser to hang or crash, the user&#8217;s email app gets hung too. For an app like that, it makes sense for the developer to create a version in AIR that can be run as a separate application. However, there&#8217;s a big dependency from the user perspective &#8212; the app developer has to actually create the AIR app. (e.g. Google would have to make an AIR version of GMail). Once the developer decides to build an AIR app, there are other benefits and capabilities that become available &#8212; but the point is it&#8217;s still in the developer&#8217;s hands to actually build the app. The value I see for Prism is that with Prism the end user can choose to make that app a Prism app without the need for any action by the app developer. Of course, the app will still have dependencies on things like an Internet connection, and won&#8217;t have any more capabilities than any other browser-sandbox app. But it&#8217;s certainly no worse than what the user already has in the browser, with some nice conveniences added in.</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2008/03/25/mozilla-prism-analysis-and-comparison-to-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Knowing when to not use AIR</title>
		<link>http://probertson.com/articles/2007/09/14/knowing-when-to-not-use-air/</link>
		<comments>http://probertson.com/articles/2007/09/14/knowing-when-to-not-use-air/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 22:58:03 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Application Design]]></category>
		<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[User-centered design]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2007/09/14/knowing-when-to-not-use-air/</guid>
		<description><![CDATA[Simplified Chaos has an insightful article about deciding when to use AIR and when to stick to browser-based Flash/Flex. His recommendation is to use the browser by default, and only move to AIR if you really need that desktop functionality. His reasoning, which I can agree with, is that people are much less likely to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simplifiedchaos.com/">Simplified Chaos</a> has an insightful article about deciding <a href="http://www.simplifiedchaos.com/2007/08/29/too-many-adobe-air-applications-that-shouldnt-be/">when to use AIR and when to stick to browser-based Flash/Flex</a>. His recommendation is to use the browser by default, and only move to AIR if you really need that desktop functionality. His reasoning, which I can agree with, is that people are much less likely to try out a desktop app that they have to install (and probably uninstall later) than to just look at something in a browser. I definitely agree &#8212; I hadn&#8217;t really realized it until reading this, but I&#8217;ve noticed that when I hear about a new AIR app then I always hope the web site has some screenshots or videos of the app in action, so that I don&#8217;t have to install it to try it out.</p>
<p><a href="http://www.bit-101.com/blog/">Keith Peters</a> wrote <a href="http://www.bit-101.com/blog/?p=1018">a similar post on the same topic</a>, which I also recommend.</p>
<p>(via <a href="http://jessewarden.com/">Jesse Warden</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2007/09/14/knowing-when-to-not-use-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tamarin link roundup</title>
		<link>http://probertson.com/articles/2006/11/07/tamarin-link-roundup/</link>
		<comments>http://probertson.com/articles/2006/11/07/tamarin-link-roundup/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 00:09:29 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2006/11/07/tamarin-link-roundup/</guid>
		<description><![CDATA[Some of the most useful links I&#8217;ve found on the recent project Tamarin announcement (Adobe&#8217;s contribution of code for AVM2&#8212;the ActionScript processing virtual machine portion of Flash Player&#8212;to the Mozilla Foundation).

Tamarin project page
Mozilla foundation press release
Nice executive summary and analysis by Frank Hecker, executive director of the Mozilla Foundation
Benchmark comparisons of Tamarin versus JavaScript performance

If [...]]]></description>
			<content:encoded><![CDATA[<p>Some of the most useful links I&#8217;ve found on the recent project Tamarin announcement (Adobe&#8217;s contribution of code for AVM2&#8212;the ActionScript processing virtual machine portion of Flash Player&#8212;to the Mozilla Foundation).</p>
<ul>
<li><a href="http://www.mozilla.org/projects/tamarin/">Tamarin project page</a></li>
<li><a href="http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html">Mozilla foundation press release</a></li>
<li><a href="http://www.hecker.org/mozilla/adobe-mozilla-and-tamarin">Nice executive summary and analysis</a> by Frank Hecker, executive director of the Mozilla Foundation</li>
<li><a href="http://www.playercore.com/pub/Tamarin/Avmplus_vs._javascript.htm">Benchmark comparisons of Tamarin versus JavaScript performance</a></li>
</ul>
<p>If you&#8217;ve only heard vague things about this deal and want a good summary, I&#8217;d read the article by Frank Hecker linked to above.</p>
<p>Most of the obvious and publicly discussed benefits are benefits for the Mozilla Foundation, Firefox, and developers using Mozilla technologies. Personally (as someone involved in ActionScript development) I think this is a really exciting announcement. Over the next day or two I hope to post my thoughts about what this means for the Flash Platform, and why I think it&#8217;s a good thing for Adobe (and, via trickle-down effect, for Adobe&#8217;s customers). But I&#8217;m on dad duty tonight, so that&#8217;ll have to wait a bit =).</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2006/11/07/tamarin-link-roundup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problem (and solution) : getURL() in a Flash projector fails in Firefox</title>
		<link>http://probertson.com/articles/2006/10/11/geturl-flash-projector-firefox-problem/</link>
		<comments>http://probertson.com/articles/2006/10/11/geturl-flash-projector-firefox-problem/#comments</comments>
		<pubDate>Wed, 11 Oct 2006 17:28:37 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles by Paul]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2006/10/11/geturl-flash-projector-firefox-problem/</guid>
		<description><![CDATA[On Windows, using  <code>getURL()</code> or a similar approach to open an HTML page from a SWF running in the standalone Flash Player (such as a Flash projector file running on a CD-ROM) doesn't work if the user has Firefox set as their default browser. Here we'll take a look at what's causing the problem and how to work around it.]]></description>
			<content:encoded><![CDATA[<p>On Windows, using  <code>getURL()</code> or a similar approach to open an HTML page from a SWF running in the standalone Flash Player (such as a Flash projector file running on a CD-ROM) doesn&#8217;t work if the user has Firefox set as their default browser. Here we&#8217;ll take a look at what&#8217;s causing the problem and how to work around it.</p>
<p class="editornote">Note: based on some <a href="#comments">helpful feedback</a> the code was revised on Oct. 30, 2006 to be more cross-platform-friendly.</p>
<p>As a followup to <a href="/articles/2006/10/06/local-remote-resources-local-swf/">a question about opening local and remote resources in ActionScript</a>, I was asked why a SWF which had been made into a projector (a standalone executable file) wasn&#8217;t able to open an HTML page using <code>getURL()</code> when the user&#8217;s default browser is Firefox. One initial idea was that it might be related to the security restrictions added in Flash Player 8, which (by default) make it so a SWF which is running off a user&#8217;s local computer can only access local resources or     network resources, but not both. However, <a href="http://livedocs.macromedia.com/flash/8/main/00001607.html">as the documentation points out</a>, a SWF which has been published as an executable file isn&#8217;t subject to the same restrictions. (And I actually tested it out to confirm that&#8217;s the case.)</p>
<p>So here&#8217;s the situation: imagine you&#8217;re creating a SWF file to use as a menu on a CD-ROM. It will have several buttons, some of which will open HTML pages that are also on the CD-ROM. That sounds easy enough&#8212;using the <code>getURL()</code> function in ActionScript 2 (or the equivalent <code>flash.net.navigateToURL()</code> function in ActionScript 3.0), you can specify a relative url (basically just the file name) of the HTML page you want to open, and when the user clicks the button, Flash Player hands the url off to the operating system and the HTML page is opened in the user&#8217;s default browser. So if you want to open a file named &#8220;test.html&#8221; which is at the same level in the file system as the SWF executable, you would use this code (ActionScript 2):</p>
<pre><code>// assume the button's instance name is myButton

myButton.onRelease = function()
{
    getURL("test.html", "_blank");
};</code></pre>
<p>or this code (ActionScript 3.0):</p>
<pre><code>// assume the button's name is myButton

import flash.events.MouseEvent;
import flash.net.*;

function openPage(event:MouseEvent):void
{
    var request:URLRequest = new URLRequest("test.html");
    navigateToURL(request, "_blank");
}

myButton.addEventListener(MouseEvent.CLICK, openPage);</code></pre>
<p>Assuming the user&#8217;s default browser is Internet Explorer (or a version of Netscape/Mozilla prior to the ones based on Firefox), this works as you would expect it to: the user clicks the button, and the page &#8220;test.html&#8221; opens in the browser.</p>
<p>However, if the user&#8217;s default browser is Firefox (or, I suspect, one of the recent Netscape versions based on Firefox) then the page does not open. Instead, one of a few possible things happens. On my system, Firefox opens with two tabs. The first tab is blank, and the second contains a security warning (something about not being able to change the location of the My Documents folder). This is very possibly because I was testing it  from my hard drive, rather than from a CD-ROM drive. On other people&#8217;s systems, from what I&#8217;ve heard, the browser opens with a blank tab and a tab which is the result of a Google &#8220;I&#8217;m feeling lucky&#8221; search based on the name of the file (which is the default action when you enter keywords rather than a valid url in the browser&#8217;s address bar).</p>
<p class="editornote">Note: this problem isn&#8217;t just limited to <code>getURL()</code> &#8212; it also applies to other methods which load a url, such as <code>LoadVars.send()</code>.</p>
<p>So what&#8217;s going on, and more importantly, how do we make it work so that we can use SWF menus to open web pages on a CD-ROM? After doing a little research, I learned first of all that Adobe is aware of the situation, and that in fact it&#8217;s not a Flash Player bug at all. It turns out that this is due to a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=249285">Firefox bug</a> (well, an out-of-control feature) based on how Firefox handles a url which is passed to it as a command-line parameter.</p>
<p>According to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=249285">the bug report</a>, when you call Firefox on the command line, you can pass it multiple urls separated by pipe (<code>|</code>) characters and it will open each one in a separate tab. So if you issue a command like this:</p>
<pre><code>firefox -url "http://www.yahoo.com/|http://www.google.com/"</code></pre>
<p>Firefox opens a new browser window, with Yahoo in one tab and Google in another.</p>
<p>Going back to Flash Player, when you call the <code>getURL()</code>/<code>navigateToURL()</code> function with a relative url (something like &#8220;test.html&#8221;), Flash Player actually constructs an absolute url which is what it passes to the browser. So when our code says <code>getURL("test.html", "_blank")</code>, Flash Player turns that into something like this in the (Windows) operating system:</p>
<pre><code>firefox -url "file:///d|assets\test.html"</code></pre>
<p>Notice the magical pipe character (<code>|</code>) where you or I would probably put a colon (i.e. &#8220;file:///d:&#92;assets&#92;test.html&#8221;). The pipe syntax is legal&#8212;Firefox just assumes that a colon will be used instead. So when Flash Player constructs an absolute url and sends it to Firefox, Firefox sees the pipe character and says &#8220;hey, they want me to open two tabs, the first with the url &#8220;file:///d&#8221; and the second with the url &#8220;assets&#92;test.html&#8221;. Hence we see a browser window with two tabs, with the second containing the result of a Google search for &#8220;assets&#92;test.html&#8221;.</p>
<p class="editornote">Note: according to the same bug report, this has been fixed for the &#8220;Deer Park&#8221; version of Firefox, which I believe is Firefox 2.0, so once that browser is out and spread throughout the world, this won&#8217;t be as much of an issue. But I won&#8217;t be holding my breath&#8230;</p>
<p>Interestingly, on the ActionScript end of things the problem stems from the fact that Flash Player is constructing an absolute url to send to the browser, and that url contains a pipe character. When you specify an absolute url in your <code>getURL()</code>/<code>navigateToURL()</code> call, Flash Player just passes  that url to the browser unmodified. Of course that&#8217;s what we&#8217;d expect for a remote web address, like &#8220;http://www.google.com/&#8221;, but it works just the same for local &#8220;file:///&#8221; urls. So to work around the Firefox bug, what we really need to do is construct the absolute url ourselves in ActionScript, and use that url (which, again, will get passed to the browser unmodified). The big question, of course, is how we can  figure out the absolute path of a file on a CD-ROM when we don&#8217;t necessarily know the drive letter of the user&#8217;s CD-ROM drive.</p>
<p>Fortunately, ActionScript comes to our rescue. Every MovieClip object (every DisplayObject in AS3) knows the url it was loaded from. You can access this as the <code>_url</code> property in ActionScript 2, or as the <code>url</code> property of the DisplayObject&#8217;s <code>loaderInfo</code> property in ActionScript 3.0. Usually, for a SWF in a web page, this will be the url of the SWF file, of course, but when a SWF is running locally (even when it&#8217;s in an executable/projector) that property contains an absolute &#8220;file:///&#8221; url with the path of the SWF file on the file system. For example, consider this code, on a keyframe on the main timeline, running in a SWF projector (an EXE file) on a CD-ROM:</p>
<pre><code>// Assumes there's a dynamic text field on the stage named output_txt

// AS2
output_txt.text = this._url; // output_txt contains "file:///E|/assets/trial.exe"

// AS3
output_txt.text = this.loaderInfo.url; // output_txt contains "file:///E|/assets/trial.exe"</code></pre>
<p>Going back to our SWF CD-ROM menu example, if the HTML page we want to open is in the same folder as the SWF projector, we can just generate our own absolute url by getting the SWF&#8217;s url, chopping off the name of the SWF, replacing the &#8220;|&#8221; with a colon, and adding the name of the HTML page. (Or, for a more complex case, we can use the SWF&#8217;s url to determine the &#8220;base&#8221; url, and then use that to generate absolute urls for files in other folders etc.)</p>
<p>Here is the code for a working version of this (ActionScript 2):</p>
<pre><code>// code on a keyframe on the main timeline

var swfUrl:String = _root._url;
var lastSlashIndex:Number = swfUrl.lastIndexOf("/");
var pipeIndex:Number = swfUrl.indexOf("|");
var baseUrl:String;
if (pipeIndex >= 0)
{
    baseUrl = swfUrl.substring(0, pipeIndex);
    baseUrl += ":";
}
else
{
    baseUrl = "";
}
baseUrl += swfUrl.substring(pipeIndex + 1, lastSlashIndex + 1);

myButton.onRelease = function()
{
    var targetUrl:String = baseUrl + "test.html";
    getURL(targetUrl, "_blank");
};
</code></pre>
<p>And here&#8217;s a working version in ActionScript 3.0:</p>
<pre><code>// code on a keyframe on the main timeline

import flash.events.MouseEvent;
import flash.net.*;

output_txt.text = this.loaderInfo.url;

var swfUrl:String = this.root.loaderInfo.url;
var lastSlashIndex:Number = swfUrl.lastIndexOf("/");
var pipeIndex:Number = swfUrl.indexOf("|");
var baseUrl:String;
if (pipeIndex >= 0)
{
    baseUrl = swfUrl.substring(0, pipeIndex);
    baseUrl += ":";
}
else
{
    baseUrl = "";
}
baseUrl += swfUrl.substring(pipeIndex + 1, lastSlashIndex + 1);

function gotoTestHtml(event:MouseEvent):void
{
    var targetUrl:URLRequest = new URLRequest(baseUrl + "test.html");
    navigateToURL(targetUrl, "_blank");
}

myButton.addEventListener(MouseEvent.CLICK, gotoTestHtml);</code></pre>
<p class="editornote">Of course for the AS3 version you could use <a href="http://livedocs.macromedia.com/flex/2/langref/RegExp.html">regular expressions</a> for the finding and replacing&#8212;but in this case it&#8217;s simple enough, and perhaps more efficient, to not use them.</p>
<p>If you&#8217;d like to try it out for yourself, you can download <a href="/resources/2006/10/11/projector-geturl.zip">FLAs for these two versions</a> (45 KB .zip).</p>
<p>By request, I&#8217;ve also made a version of <a href="/resources/2006/10/11/projector-geturl-mx04.zip">the FLA in Flash MX 2004 format</a> (31 KB .zip).</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2006/10/11/geturl-flash-projector-firefox-problem/feed/</wfw:commentRss>
		<slash:comments>113</slash:comments>
		</item>
		<item>
		<title>Mozilla Firefox Tips &amp; Tricks</title>
		<link>http://probertson.com/articles/2004/07/29/mozilla-firefox-tips-tricks/</link>
		<comments>http://probertson.com/articles/2004/07/29/mozilla-firefox-tips-tricks/#comments</comments>
		<pubDate>Thu, 29 Jul 2004 16:38:58 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2004/07/29/mozilla-firefox-tips-tricks/</guid>
		<description><![CDATA[Mozilla Firefox Tips &#38; Tricks
]]></description>
			<content:encoded><![CDATA[<p><a href="http://texturizer.net/firefox/tips.html">Mozilla Firefox Tips &amp; Tricks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2004/07/29/mozilla-firefox-tips-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complying with IE in XP SP2</title>
		<link>http://probertson.com/articles/2004/07/28/complying-with-ie-in-xp-sp2/</link>
		<comments>http://probertson.com/articles/2004/07/28/complying-with-ie-in-xp-sp2/#comments</comments>
		<pubDate>Wed, 28 Jul 2004 16:24:45 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Web Browsers]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2004/07/28/complying-with-ie-in-xp-sp2/</guid>
		<description><![CDATA[Complying with IE in XP SP2
]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/security/productinfo/xpsp2/default.aspx?pull=/library/en-us/dnwxp/html/xpsp2web.asp">Complying with IE in XP SP2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2004/07/28/complying-with-ie-in-xp-sp2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
