<?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>deconcept &#187; xhtml</title>
	<atom:link href="http://blog.deconcept.com/category/xhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.deconcept.com</link>
	<description>You&#039;ve got your good thing, and I&#039;ve got mine</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:14:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Speaking at Flashbelt</title>
		<link>http://blog.deconcept.com/2007/03/01/speaking-at-flashbelt/</link>
		<comments>http://blog.deconcept.com/2007/03/01/speaking-at-flashbelt/#comments</comments>
		<pubDate>Thu, 01 Mar 2007 18:54:42 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[webstandards]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2007/03/01/speaking-at-flashbelt/</guid>
		<description><![CDATA[While I was at Flash on the Beach back in December, I met Dave and didn&#8217;t even realize he was the dave from Pilotvibe and the organizer of Flashbelt. Schematic sent a few people up there last year to give &#8230; <a href="http://blog.deconcept.com/2007/03/01/speaking-at-flashbelt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While I was at Flash on the Beach back in December, I met Dave and didn&#8217;t even realize he was the dave from Pilotvibe and the organizer of <a href="http://www.flashbelt.com/" rel="external">Flashbelt</a>. Schematic sent a few people up there last year to give presentations, and they all said it was fantastic, so I was very excited when Dave invited me to speak at this year&#8217;s conference.</p>
<p>I&#8217;ll be giving a talk called <strong>Progressive Enhancement with Flash</strong> that will cover stuff like:</p>
<ul>
<li>Using SWFObject (maybe SWFFix by then) to embed Flash content</li>
<li>Using progressive enhancement to allow search engines to properly index your content and increase SEO for Flash websites</li>
<li>Flash content vs. Flash style, and how to treat them differently</li>
<li>Deep linking and back button support in Flash</li>
</ul>
<p>And a few other areas. I should also be able to talk about SWFFix a bit (hopefully it will be fully released by then, but who knows).</p>
<p>Go check out the <a href="http://www.flashbelt.com/" rel="external">Flashbelt</a> page for more info. I can&#8217;t give you a direct link to my session, but it&#8217;s listed there in the session list. Hopefully I&#8217;ll see some of you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2007/03/01/speaking-at-flashbelt/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Announcing the SWFFix project</title>
		<link>http://blog.deconcept.com/2007/02/06/announcing-the-swffix-project/</link>
		<comments>http://blog.deconcept.com/2007/02/06/announcing-the-swffix-project/#comments</comments>
		<pubDate>Tue, 06 Feb 2007 15:20:12 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[webstandards]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2007/02/06/announcing-the-swffix-project/</guid>
		<description><![CDATA[SWFFix is a new joint project from myself and Bobby van der Sluis. The project&#8217;s goal is to replace SWFObject and UFO with a single method that is (hopefully) more standards compliant and doesn&#8217;t rely entirely on Javascript. We&#8217;ve put &#8230; <a href="http://blog.deconcept.com/2007/02/06/announcing-the-swffix-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.swffix.org/" rel="external">SWFFix</a> is a new joint project from myself and <a href="http://www.bobbyvandersluis.com/" rel="external">Bobby van der Sluis</a>. The project&#8217;s goal is to replace SWFObject and UFO with a single method that is (hopefully) more standards compliant and doesn&#8217;t rely entirely on Javascript.</p>
<p>We&#8217;ve put up a <a href="http://www.swffix.org/devblog/" rel="external">dev blog</a> on the site, and will be asking for help and feedback throughout the development cycle, so head over and watch the blog for updates in the coming weeks.</p>
<p>Bobby also has a great <a href="http://www.alistapart.com/articles/flashembedcagematch" rel="external">A List Apart article</a> out today that talks about the problems with current Flash embed techniques.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2007/02/06/announcing-the-swffix-project/feed/</wfw:commentRss>
		<slash:comments>82</slash:comments>
		</item>
		<item>
		<title>Using progressive enhancement with Flash</title>
		<link>http://blog.deconcept.com/2006/09/12/using-progressive-enhancement-flash/</link>
		<comments>http://blog.deconcept.com/2006/09/12/using-progressive-enhancement-flash/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 15:59:48 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[webstandards]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/09/12/using-progressive-enhancement-flash/</guid>
		<description><![CDATA[There&#8217;s a fantastic article on Adobe&#8217;s devnet site that Bobby wrote (he&#8217;s the guy who wrote SWFObject&#8217;s biggest competition, UFO*). All about progressive enhancement with Flash. It includes helping your Flash content get picked up by search engines, supporting people &#8230; <a href="http://blog.deconcept.com/2006/09/12/using-progressive-enhancement-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a <a href="http://www.adobe.com/devnet/flash/articles/progressive_enhancement.html" rel="external">fantastic article</a> on Adobe&#8217;s devnet site that <a href="http://www.bobbyvandersluis.com/" rel="external">Bobby</a> wrote (he&#8217;s the guy who wrote SWFObject&#8217;s biggest competition, <a href="http://www.bobbyvandersluis.com/ufo/">UFO</a>*). All about progressive enhancement with Flash. It includes helping your Flash content get picked up by search engines, supporting people without the Flash player, and a ton of other good info. <a href="http://www.adobe.com/devnet/flash/articles/progressive_enhancement.html" rel="external">Go have a read</a>.</p>
<p><small>* But hey, it&#8217;s not really a competition, use whatever works best for you.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/09/12/using-progressive-enhancement-flash/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the haps, chaps?</title>
		<link>http://blog.deconcept.com/2006/09/06/whats-the-haps-chaps/</link>
		<comments>http://blog.deconcept.com/2006/09/06/whats-the-haps-chaps/#comments</comments>
		<pubDate>Wed, 06 Sep 2006 16:21:43 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/09/06/whats-the-haps-chaps/</guid>
		<description><![CDATA[No good nerd info in this post, just wanted to brag give an update as to what I&#8217;m up to the next few weeks/months. Today is the start of a new semester at Cooper, which means a new XHTML + &#8230; <a href="http://blog.deconcept.com/2006/09/06/whats-the-haps-chaps/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No good nerd info in this post, just wanted to <s>brag</s> give an update as to what I&#8217;m up to the next few weeks/months.</p>
<p>Today is the start of a new semester at Cooper, which means a new XHTML + Flash class! Next week I&#8217;m off to Austin for <a href="http://www.flashforwardconference.com/sessions?sid=109" rel="external">Flash Forward</a>, where I&#8217;ll give a presentation about <a href="/swfobject/">SWFObject</a> and general Flash embedding. If you are going, feel free to stop and say &#8216;hi.&#8217; If you can&#8217;t make it to Flash Forward, I&#8217;ll be heading to the UK in December for <a href="http://www.flashonthebeach.com/sessions/index.php?pageid=318" rel="external">Flash on the Beach</a>, where I&#8217;ll be giving another presentation, this one will be geared more towards Flash and Web 2.0 stuff living in harmony (Yes! It&#8217;s possible!).</p>
<p>Also: <a href="http://www.thefwa.com/flash10/" rel="external">&#8220;The most influential Flash site of the decade&#8221;</a> uses SWFObject (FlashObject actually, but same thing).</p>
<p>Also (again): The <a href="http://www.amazon.com/JavaScript-Definitive-Guide/dp/0596101996/" rel="external">5th edition of Javascript: The definitive guide</a> is out. I got a copy yesterday from O&#8217;reilly (I did a tech review of one of the chapters a while back) and I must say that it&#8217;s fantastic. The 4th edition of the book was great, and is one of the only books that has a permanant spot on my desk, so this is a very welcome update.</p>
<p>That&#8217;s about it. What&#8217;s new with you?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/09/06/whats-the-haps-chaps/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>On embedding Flash content using Web Standards (yes, again)</title>
		<link>http://blog.deconcept.com/2006/08/16/embedding-flash-content-using-web-standards-yes-again/</link>
		<comments>http://blog.deconcept.com/2006/08/16/embedding-flash-content-using-web-standards-yes-again/#comments</comments>
		<pubDate>Wed, 16 Aug 2006 17:21:42 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webstandards]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/08/16/embedding-flash-content-using-web-standards-yes-again/</guid>
		<description><![CDATA[Lately there&#8217;s been a bit of buzz around embedding plugins while adhering to Web Standards™. First this ALA article came out and said &#8220;bye bye embed&#8221;, then yesterday one of the WaSP nerds posted something about &#8220;Valid Flash, video and &#8230; <a href="http://blog.deconcept.com/2006/08/16/embedding-flash-content-using-web-standards-yes-again/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lately there&#8217;s been a bit of buzz around embedding plugins while adhering to Web Standards™. First this ALA article came out and said <a href="http://alistapart.com/articles/byebyeembed" rel="external">&#8220;bye bye embed&#8221;</a>, then yesterday one of the WaSP nerds posted something about <a href="http://www.webstandards.org/2006/08/15/valid-flash-video-and-audio-embed-object-markup/" rel="external">&#8220;Valid Flash, video and audio embed (object) markup&#8221;</a>.</p>
<p>It&#8217;s understandable to want to try and force browsers to display your plugin content in a way that adheres to &#8220;Web Standards&#8221;. It&#8217;s a very popular subject, and it&#8217;s been covered <a href="http://alistapart.com/articles/flashsatay/" rel="external">a few</a> <a rel="external" href="http://ln.hixie.ch/?start=1081798064&#038;count=1">times</a> <a href="http://joeclark.org/access/captioning/bpoc/embed-object.html" rel="external">before</a>. These two recent articles don&#8217;t uncover anything new, other than bringing to light (via the comments on them) that Javascript is the only viable method of embedding Flash (and other plugin based) content on the web today.</p>
<p>Now I&#8217;m going to say something here that might seem a little controversial, but I really want to get the point across, so I&#8217;m going to use some &#8216;shock and awe&#8217; tactics:</p>
<h3>Using <em>only</em> the object tag to embed your plugin content (especially Flash content) is fucking stupid.</h3>
<p>There. I said it.</p>
<p>You may say that I&#8217;m a bit biased because I wrote some <a href="/swfobject/">fancy pants Javascript Flash embed script</a>. Maybe I have a hidden agenda of world domination based on plugin detection. So while I no doubt would like to dominate the world, let me say that my reasons for advocating the use of Javascript are much more mundane.</p>
<p>This post was originally going to be titled &#8220;Flash Satay considered harmful,&#8221; and since the main topic are these &#8220;Web Standards&#8221; compliant ways of only using the object tag to embed plugin content, I&#8217;ll focus on the issues with doing so:</p>
<ul>
<li>&#8220;Click to activate&#8221; in IE. The only way to get around this is to use Javacript.</li>
<li>No plugin detection. While Ben says &#8216;meh&#8217; to this, it&#8217;s a very important aspect of the user experience. If I have Flash Player 6 installed, and I visit a site that uses Flash 9 content, my player will go ahead and try to play that swf anyway. I could end up seeing half of the content, or broken content, or who knows what. Do you really want to show your users broken content?</li>
<li>Issues in older Safari versions: Safari pre 1.2 will completely ignore param tags, which are often used to pass information to the plugin. This means broken content for your users.</li>
<li>Support for the object tag varies widely from browser to browser. Do you think that just because you work around all the quirks in the 3 main browsers today, it will still work when the next new browser is released?</li>
<li>A bug in Flash Player 9 can cause the browser to crash if you have more than one swf on the page and are using ExternalInterface to communicate with Javacsript. While this isn&#8217;t specifically related to how the swf is embedded, SWFObject does include a fix for this issue.</li>
<li>Using Flash Satay or other &#8216;object only&#8217; methods will not stream your Flash movies to the user &#8211; this means extra work for you in creating a &#8216;loader&#8217; swf</li>
<li><a href="http://weblogs.macromedia.com/accessibility/archives/2005/08/in_search_of_a.cfm" rel="external">JAWS will ignore it</a>.</li>
</ul>
<p>It&#8217;s a pretty long list, right? Now if you compare that to the user experience when using SWFObject (or other Javascript based techniques), you can see a noticable difference:</p>
<ul>
<li> The only time a user doesn&#8217;t see Flash is if they have Javascript turned off, or they don&#8217;t have the required version of the Flash Plugin. This one is a two parter: One, do you think that people really turn off Javascript but leave Flash on? Consider the type of person who turns Javascript off. They are probably the über nerd user who considers anything that isn&#8217;t text to be completely evil. They browse the web using Lynx. They probably stay a mile away from the Flash Plugin anyway. The beauty of the way SWFObject works is that even these people get content if you set it up right. Since you put alternate content &#8216;under&#8217; your swf, they will just see the alternate content. As long as you set it up right (you do, don&#8217;t you?) they may never even know they are missing out on Flash content.</li>
<li>They don&#8217;t have to click your movie once to &#8216;activate&#8217; it</li>
<li>Their browser doesn&#8217;t crash just because you had two swfs on the same page that use ExternalInterface</li>
<li>They only see Flash content if their browser and plugin support it.</li>
</ul>
<p>Taking all of the above into account, the choice is very clear: Javascript wins hands down. Any questions?</p>
<p>Now that all of that is taken care of, I wanted to address a couple of things:</p>
<p>First, these types of posts are not good for the Web Standards community. Basically what&#8217;s happening is highly visible people (even if they aren&#8217;t that well known, they still carry the WaSP name, or have articles on well respected online publications like A List Apart) are posting information that is bad for your users. Even worse is that they are doing it in the name of &#8220;Web Standards&#8221; and not taking into consideration any of the other options outside of pure HTML. <strong>This is extremely bad for the Web Standards movement.</strong> It makes the standards advocates look like crazed zealots who don&#8217;t care about user experience, but only care about adhering to the written rules exactly how they are stated even if it hurts them.</p>
<p>Second, you may be saying &#8220;well, if I can&#8217;t use the object tag, then what good is it?&#8221; and that is a FANTASTIC question. What good is it? Beats me, because the object tag is completely and utterly broken in nearly every web browser out there. Want to do something about it? <a href="/2006/04/18/where-is-web-browser-plug-in-task-force/">Maybe you could join WaSP and create a task force to fix how browsers handle plugins?</a></p>
<p><strong>UPDATE:</strong> I added this as a comment below, but wanted to put it in the main post as well: I want to say that as for Flash Satay: It was fantasic for the people who use(d) it, and in it’s time it was great. But now that certain big issues with it have been discovered, and Flash has changed over time, it’s time for it to retire. This is something I’ve been meaning to mention for a while, and it was sort of implied on the SWFObject page. So, since we are on the subject, it’s time to give it up.</p>
<p><strong>UPDATE (8-17-2006):</strong> Ben has posted <a href="http://www.webstandards.org/2006/08/17/flash-javascript-and-web-standards-like-sodium-and-water/" rel="external">a follow up</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/08/16/embedding-flash-content-using-web-standards-yes-again/feed/</wfw:commentRss>
		<slash:comments>161</slash:comments>
		</item>
		<item>
		<title>A modern approach to Flash SEO</title>
		<link>http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/</link>
		<comments>http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/#comments</comments>
		<pubDate>Mon, 13 Mar 2006 12:37:37 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashobject]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/</guid>
		<description><![CDATA[Search engine optimization is one of the most popular subjects when nerds sit around and talk about Flash. &#8220;Does Google index your swf files?&#8221; seems to be the most popular question, usually garnering plenty of &#8216;yes&#8216; and &#8216;no&#8217; and &#8216;maybe&#8217; &#8230; <a href="http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Search engine optimization is one of the most popular subjects when nerds sit around and talk about Flash. &#8220;Does Google index your swf files?&#8221; seems to be the most popular question, usually garnering plenty of &#8216;<a href="http://www.informit.com/articles/article.asp?p=454163&#038;seqNum=1" rel="external">yes</a>&#8216; and &#8216;no&#8217; and &#8216;maybe&#8217; answers. The real answer to this question, once and for all, is this: </p>
<p><em>It doesn&#8217;t matter</em>.</p>
<p>To understand this answer, you need to understand what Flash <em>is</em>. And to do that, you need to understand modern web development philosophy. First off, you need to embrace web standards. Semantic markup and separating content from style and behavior is the only way you should be building your sites. Many web standardistas have been recommending this method of web development for years, and rightly so. However, this post isn&#8217;t the place to go into the whys of this type of development, so I&#8217;ll skip that part and just say this about how it&#8217;s done: There are three areas of front-end web development: Content, Style, and Behavior. You should always keep these three things separated as much as possible.</p>
<p>That brings up the question: &#8220;Where does Flash fit into this three pillar method of web development?&#8221; Is it content? Is it behavior? Is it style? While it could be considered all three, most professional Flash developers will remove the content from their Flash movies and load it in using Flash remoting or XML files. That leaves us with style and behavior.</p>
<p>Style is added using CSS. Generally when you add images to your HTML that are purely presentational (no text or required content in them) you should add them in using CSS. In most cases you don&#8217;t want Google to index them because people don&#8217;t search the web for &#8216;top left rounded corner gif.&#8221; They search for content. Even if Google upgrades their crawler someday to read CSS files and index the images, they probably wouldn&#8217;t use the information for more than statistical analysis because of this.</p>
<p>Behavior is generally added using Javascript. Maybe you want a new window to open set to a certain size, or you want to use some fancy Ajax to let users rate something without refreshing the page. This should all be added <a href="http://www.onlinetools.org/articles/unobtrusivejavascript/" rel="external">unobtrusively</a>, and if the browser doesn&#8217;t support Javascript, it will hopefully still work. Unfortunately, not everyone considers this, and these days Javascript is becoming more and more of a requirement to use most websites. So you should always provide some sort of alternative for non-Javascript users. When it comes to indexing behavior, Google will for the most part not index your Javascript files. Even if it did, most web users would have no idea what the .js file they are looking at actually does. When using Javascript to change your document, Google will not read the &#8216;final&#8217; page, but only the raw HTML file. Google does not render Javascript <sup><a href="#note1">1</a></sup>.</p>
<p>Now that you know all of this, it&#8217;s time to look at how to treat your Flash content. Since we&#8217;ve determined we <em>don&#8217;t</em> want Google to index our swf files, but we <em>do</em> want it to index the content displayed inside them, what is the best way to go about this?</p>
<p>As stated before, if you are building Flash sites professionally, you probably move all your content out of your Flash movie and into an XML file or keep it in a database. This makes it much easier to allow Google to index this content by using progressive enhancement.</p>
<p>Progressive enhancement is a method of web development that goes hand in hand with Web Standards. You start with your HTML (your content), then add CSS (your look and feel), then add in additional behavior (Javascript, Ajax, Flash, any other interactivity that isn&#8217;t handled automatically by the browser).</p>
<p>The best way to add Flash progressively is by using Javascript, or more specifically, a script like <a href="/flashobject/">FlashObject</a>. First you lay out your page as if you aren&#8217;t using Flash. If you are using a database for your content, you can spit out that data as HTML where the Flash movie will go on the page (or maybe just a preview of the content, it&#8217;s up to you to show Google the content you would like indexed). Then you use FlashObject to replace this content only if the user has Javascript enabled and the required Flash plugin version.</p>
<p>Here&#8217;s a small example of what that might look like:</p>
<pre><code>&lt;div id="flashcontent"&gt;
    This is replaced by the Flash content if the user has the correct version of the Flash plugin installed.
    Place your HTML content in here and Google will index it just as it would normal HTML content (because it <em>is</em> HTML content!)
    Use HTML, embed images, anything you would normally place on an HTML page is fine.
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
    // &lt;![CDATA[
    var fo = new FlashObject("flashmovie.swf", "flashmovie", "300", "300", "8", "#FF6600");
    fo.write("flashcontent");
    // ]]&gt;
&lt;/script&gt;</code></pre>
<p>This causes Google to skip the Flash swf files and only index the HTML (the content!) you place on the page. You can place links to other pages, images, whatever you want Google to index, and when a viewer with a browser that supports Flash visits your site, they will then see the Flash content. This gives you full control and much greater predictability over what content Google will index. And if your content is pulled from a database that is editor controlled, your pages will update and be re-indexed as the content changes without the need to re-publish all your swf files.</p>
<p><small id="note1"><sup>1</sup> Currently Google does not render the Javascript on a page, but there are rumors that they are developing a new crawler based on Firefox (they employ a number of Mozilla foundation members) that will index pages based on how the browser sees them, instead of the raw HTML content. This means HTML hidden by CSS may not be indexed, and pages that are altered by Javascript after they load will be indexed how they appear to the user. <em>However</em>, this is all rumors and until it happens Google will ignore your Javascript content.</p>
<p>Note: In this article I use the &#8216;Google&#8217; name often, but it can be interchanged with any search engine, as they all work roughly the same way.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/feed/</wfw:commentRss>
		<slash:comments>517</slash:comments>
		</item>
		<item>
		<title>FlashObject 1.3 Released</title>
		<link>http://blog.deconcept.com/2006/01/17/flashobject-1-3-released/</link>
		<comments>http://blog.deconcept.com/2006/01/17/flashobject-1-3-released/#comments</comments>
		<pubDate>Tue, 17 Jan 2006 17:37:21 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[flashobject]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/01/17/flashobject-1-3-released/</guid>
		<description><![CDATA[I have just released version 1.3 of FlashObject. Changes are as follows: [Changed] When calling FlashObject.write() you can now pass an HTMLElement reference. Previously you needed to pass a string (the Id of the element to write the Flash content &#8230; <a href="http://blog.deconcept.com/2006/01/17/flashobject-1-3-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have just released version 1.3 of <a href="/flashobject/">FlashObject</a>. Changes are as follows:</p>
<ul>
<li>[Changed] When calling FlashObject.write() you can now pass an HTMLElement reference. Previously you needed to pass a string (the Id of the element to write the Flash content to)</li>
<li>[Changed] Made changes to the plugin detection routine that would cause a crash in browsers running certain versions of the Flash plugin. Read <a href="/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/">a comprehensive description of the issue and the fix</a>.</li>
<li>[New] You may now specify a specific URL to redirect the user to after they complete an ExpressInstall process. Previously the script would always redirect them to the page the Flash movie was embedded in, but when using a popup window this is not always the best solution. See the <a href="/flashobject/#expressinstall">ExpressInstall section of the FlashObject page</a> for more information.</li>
<li>[New] FlashObject now integrates seamlessly with the <a href="http://weblogs.macromedia.com/flashjavascript/" rel="external">Javascript Integration Kit</a>. More information on this is forthcoming in a new blog post.</li>
<li>[New] I&#8217;ve used <a href="http://alex.dojotoolkit.org/shrinksafe/">Dojo Shrinksafe</a> to strip out the extra space in the flashobject.js file. FlashObject now weighs in at just a hair over 6kb. Super tiny! The FlashObject &#8216;source code&#8217; (un-shunken Javascript) is included in the FlashObject zip file in the &#8216;source&#8217; folder. I also made a number of small syntax changes to reduce the size even more.</li>
</ul>
<p>I&#8217;ve updated the <a href="/flashobject/">FlashObject page</a> to reflect these changes. I recommend that everyone should upgrade if you are using any older version of FlashObject. If you are upgrading from v. 1.2, you can simply replace your flashobject.js file and you should be ready to go. Versions earlier than 1.2, you may need to make minor adjustments to your embed code (see the <a href="/2005/07/24/flashobject-1-2/">changes to v. 1.2</a> for help with that)</p>
<p><strong>UPDATE (1-25-2006):</strong> Found a small bug in this latest version that caused the Flash movie to not load on IE 5.01 on PC. The bug has been fixed and the zip/source has been updated. Please update to the latest version if you are using 1.3 and have a lot of users using IE 5.01 (does anyone have a high number of those anymore?). The new version number is 1.3b.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/01/17/flashobject-1-3-released/feed/</wfw:commentRss>
		<slash:comments>191</slash:comments>
		</item>
		<item>
		<title>BarCamp NYC &#8211; Jan 14th and 15th</title>
		<link>http://blog.deconcept.com/2006/01/09/barcamp-nyc-jan-14th-and-15th/</link>
		<comments>http://blog.deconcept.com/2006/01/09/barcamp-nyc-jan-14th-and-15th/#comments</comments>
		<pubDate>Mon, 09 Jan 2006 23:55:43 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[new york city]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web stuff]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2006/01/09/barcamp-nyc-jan-14th-and-15th/</guid>
		<description><![CDATA[BarCamp NYC is coming up this weekend. I&#8217;ll be there with a handful of coworkers from Schematic, we&#8217;ll be doing a presentation on Flash and Javascript nerdery and other topics (the presentation is still in development). If you are into &#8230; <a href="http://blog.deconcept.com/2006/01/09/barcamp-nyc-jan-14th-and-15th/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>BarCamp NYC is coming up this weekend. I&#8217;ll be there with a handful of coworkers from Schematic, we&#8217;ll be doing a presentation on Flash and Javascript nerdery and other topics (the presentation is still in development).</p>
<p>If you are into nerd things, <a href="http://barcamp.org/index.cgi?BarCampNYC" rel="external">head over to the BarCamp website and register</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2006/01/09/barcamp-nyc-jan-14th-and-15th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The new Macromedia Flash Player detection kit</title>
		<link>http://blog.deconcept.com/2005/08/08/new-macromedia-flash-player-detection-kit/</link>
		<comments>http://blog.deconcept.com/2005/08/08/new-macromedia-flash-player-detection-kit/#comments</comments>
		<pubDate>Mon, 08 Aug 2005 20:50:12 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/08/08/new-macromedia-flash-player-detection-kit/</guid>
		<description><![CDATA[With the announcement of Flash 8 today, Macromedia also quietly pushed out their new detection kit. The detection kit has has been around for the last few versions of Flash, and usually changes with each version to include whatever the &#8230; <a href="http://blog.deconcept.com/2005/08/08/new-macromedia-flash-player-detection-kit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With the <a href="http://www.macromedia.com/software/flash/flashpro/?promoid=BINT" rel="external">announcement of Flash 8 today</a>, Macromedia also quietly pushed out their <a href="http://www.macromedia.com/software/flashplayer/download/detection_kit/" rel="external">new detection kit</a>. The detection kit has has been around for the last few versions of Flash, and usually changes with each version to include whatever the latest trends in Flash detection are.</p>
<p>It&#8217;s no wonder then, that the latest version uses Javascript as the suggested detection method. Unfortuntely, it&#8217;s not perfect. While it&#8217;s a good first try, it is greatly lacking in a few basic needs of most web developers. Here&#8217;s the issues I have with it:</p>
<ul>
<li><em>Inline Javascript code (and lots of it)</em> &#8211; Who wants to copy a bunch of Javascript and VBscript onto every single page that uses Flash? While it might be possible to move the Javascript into an external file, you would still have a small amount of VBScript on each page (or another external file to include). I&#8217;m not sure why they decided to leave in the VBScript when there are other reliable ways to create and test for ActiveX objects. Also: what happens if you need to upgrade the Javascript for some reason? While the code should be very futureproof, you never know when a bug might pop up, and you&#8217;ll be stuck editing all of your HTML files that have Flash movies included in them.</li>
<li><em>Tough to modify the code</em> &#8211; It suffers from the same drawbacks as most Javascript embed techniques &#8211; placing tons of Javascript <code>document.write()</code> calls and writing out your object or embed tags to the page. This is a hassle to edit if you need to make changes, and makes it very tough for designers who don&#8217;t know Javascript to go in and modify attributes.</li>
<li><em>It&#8217;s not valid HTML or XHTML</em> &#8211; Valid XHTML documents aren&#8217;t for everyone, but when you have clients specifically asking for them it&#8217;s nice to be able to deliver. The new detection doesn&#8217;t even come close to validating.</li>
</ul>
<p>If you want to compare the new Macromedia detection to my <a href="/flashobject/">FlashObject</a> script, check out this new article that shows how to use it:</p>
<p><a href="http://www.macromedia.com/devnet/mx/flash/articles/fp8_detection.html" rel="external">Best Practices for Flash Player Detection</a></p>
<p>Then compare the steps needed to get that working with using FlashObject:</p>
<ol>
<li>Include single .js file.</li>
<li>Add a few lines of code (<a href="http://blog.deconcept.com/flashobject/#howitworks">see example of bare minimum</a>).</li>
<li>Sit back, relax.</li>
</ol>
<p>I think the choice is clear.</p>
<p>Now when you downloaded the new detection kit you may have noticed another folder hiding out in there with the name of &#8220;Express Installation.&#8221; This is Macrmedia&#8217;s new way of upgrading your Flash player without the need to go to macromedia and download the new plugin. I&#8217;ll be writing up a new entry soon that gives some tips and best practices on using this method in the very near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/08/08/new-macromedia-flash-player-detection-kit/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>FlashObject 1.2</title>
		<link>http://blog.deconcept.com/2005/07/24/flashobject-1-2/</link>
		<comments>http://blog.deconcept.com/2005/07/24/flashobject-1-2/#comments</comments>
		<pubDate>Mon, 25 Jul 2005 03:47:37 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/07/24/flashobject-1-2/</guid>
		<description><![CDATA[I&#8217;m pleased to announce version 1.2 of my FlashObject script. The big new addition is minor version detection and revision detection, so now you can detect versions like "6.0.65" if you like. I also got some advice from Toby Boudreaux, &#8230; <a href="http://blog.deconcept.com/2005/07/24/flashobject-1-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce version 1.2 of my FlashObject script. The big new addition is minor version detection and revision detection, so now you can detect versions like <code>"6.0.65"</code> if you like. I also got some advice from <a href="http://www.tobyjoe.com/">Toby Boudreaux</a>, who provided tons of help in getting the code all fancied up and name spaced, so it shouldn&#8217;t collide with any other scripts on your websites now. We also went through and leaned out some features that weren&#8217;t being used much. Namely the <code>fo.altTxt</code> var and the extra line that included the bypass detection link. You can still bypass the detection just as you have been, but the script will no longer automatically write the alternate content at all (even if you manually override it like you could in v.1.1). If you have no idea what that last sentance means, just ignore it, as you probably weren&#8217;t using the feature anyway.</p>
<p>I&#8217;ve also given FlashObject a permanent home at <a href="http://blog.deconcept.com/flashobject/">http://blog.deconcept.com/flashobject/</a>.</p>
<p>Here&#8217;s the full list of what has changed:</p>
<ul>
<li><strong><code>fo.write()</code> now requires an element ID.</strong> In previous versions you could call <code>write()</code> with no parameters and the FlashObject script would write the Flash movie to the page wherever the script was placed on the page. This is no longer the case and now you must specify an element ID.</li>
<li><strong><code>fo.altTxt</code> no longer exists.</strong> You must now place all your alternate content or upgrade message in the div where your Flash content will be written.</li>
<li><strong><code>fo.redirect</code> no longer exists.</strong> When using FlashObject to redirect users to a separate upgrade page, you now specify the redirect url like this: <code>fo.setAttribute('redirectUrl', 'http://www.example.com');</code></li>
</ul>
<p>I highly recommend upgrading to this version. While I was adding the minor version detection, I found a bug that will cause Netscape plugin based browsers to fail the Flash detection once the major version gets up to two digits. That means it will work fine up to Flash 9, but then return 0 if the user has Flash player 10 (this is all assuming Macromedia keeps incrementing the version numbers, and that Adobe doesn&#8217;t change everything around when they take over).</p>
<p>So that&#8217;s it. This will probably be the last version update to FlashObject, since there isn&#8217;t much else I could add that would be useful to everyone. So go tell your friends about it &#8211; there&#8217;s really <a href="http://blog.deconcept.com/2005/07/18/why-dont-you-use-flashobject/">no reason</a> you shouldn&#8217;t be using this to embed your Flash movies.</p>
<p><strong>UPDATE:</strong> Dave Benjamin pointed out a flaw in the new detection checking function, and that has been fixed. I also fixed a very small issue with the version check that would cause it to fail if you had version 9.1.0, and the page required 8.2.0 (for example), so make sure you get the latest version.</p>
<p><strong>UPDATE (07-27-2005):</strong> Matthew Richmond set me up with a better looking test file, that also shows the full page version much better, so the download / example pages have been updated.</p>
<p><strong>UPDATE (08-01-2005):</strong> Just fixed a bug in the detection function that would throw an error when no Flash player was installed, thus casing the redirect to fail if you were trying to redirect users to an upgrade page. Thanks to Carl Wurtz for pointing that out. I also took the chance to update the ActiveX plugin detection code. No more VBscript in there (not even an execscript() call). New version number is 1.2.2 &#8211; make sure you have <a href="http://blog.deconcept.com/flashobject/flashobject1-2.zip">the latest version!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/07/24/flashobject-1-2/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>After Flash Forward</title>
		<link>http://blog.deconcept.com/2005/07/07/after-flash-forward/</link>
		<comments>http://blog.deconcept.com/2005/07/07/after-flash-forward/#comments</comments>
		<pubDate>Thu, 07 Jul 2005 18:15:37 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[new york city]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/07/07/after-flash-forward/</guid>
		<description><![CDATA[We just finished up our Flash Forward session. If you were watching I would love to hear feedback (just leave a comment or send me an e-mail). Here are links to the projects we showed or talked about: Winged Migration &#8230; <a href="http://blog.deconcept.com/2005/07/07/after-flash-forward/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We just finished up our Flash Forward session. If you were watching I would love to hear feedback (just leave a comment or send me an e-mail).</p>
<p>Here are links to the projects we showed or talked about:</p>
<ul>
<li><a href="http://www.sonyclassics.com/wingedmigration/index_flash.html">Winged Migration</a></li>
<li><a href="http://www.sonyclassics.com/badass/">Badasssss</a></li>
<li><a href="http://www.ivillage.com/">iVillage</a></li>
<li><a href="http://www.sonyclassics.com/fogofwar/">Fog of War</a></li>
<li><a href="http://www.cosmogirl.com/">CosmoGirl</a></li>
<li><a href="http://sleepfoundation.org/">National Sleep Foundation</a></li>
<li><a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=2960">Adobe CS2 Web Photo Galleries (source files)</a></li>
<li><a href="http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/">FlashObject</a></li>
</ul>
<p>And if you couldn&#8217;t make it, <a href="http://www.iseefrance.net" rel="external">Brandie</a> posted <a href="http://www.flickr.com/photos/icyfrance/sets/555734/" rel="external">some pictures</a>.</p>
<p><strong>UPDATE:</strong> <a href="http://www.choppingblock.com/presentations/ffnyc05/ff_nyc_2005_flashobject.pdf.zip" rel="external">Here&#8217;s the presentation in PDF format.</a> (44MB)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/07/07/after-flash-forward/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>XM Radio Online v2.0 launches, now with AJAX!</title>
		<link>http://blog.deconcept.com/2005/04/26/xm-radio-online-v20-now-with-ajax/</link>
		<comments>http://blog.deconcept.com/2005/04/26/xm-radio-online-v20-now-with-ajax/#comments</comments>
		<pubDate>Tue, 26 Apr 2005 14:44:38 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/04/26/xm-radio-online-v20-now-with-ajax/</guid>
		<description><![CDATA[XM Radio Online v2.0 is up. This was a complete rebuild of the UI and a nice overhaul to the back-end as well. Unlike the previous version, the UI is now mostly Javascript using xmlHttpRequest (that&#8217;s AJAX if you follow &#8230; <a href="http://blog.deconcept.com/2005/04/26/xm-radio-online-v20-now-with-ajax/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://listen.xmradio.com/" rel="external">XM Radio Online v2.0</a> is up. This was a complete rebuild of the UI and a nice overhaul to the back-end as well. Unlike the previous version, the UI is now mostly Javascript using <code>xmlHttpRequest</code> (that&#8217;s AJAX if you follow the trendy names for these things) for the channel/song data updates. There&#8217;s still a few small Flash movies for displaying the presets and the current song data.</p>
<p>Here&#8217;s a screenshot of the new player:</p>
<p><img src="/images/2005/04/xmradioonline.gif" alt="XM Radio Online Player v2.0" /></p>
<p>This new version should be much more accessible and easier to use, and also takes up fewer system resources, so people who want to tune in a channel and leave it playing in the background while they work should be happier.</p>
<p>This was an excellent project to work on &#8211; while I&#8217;ve done quite a bit of DHTML/Javascript work in the past, I&#8217;ve never used it as a base for an entire application. This was also the first time I used xmlHttpRequest, but I found that applying my Flash knowledge to the AJAX model worked out great &#8211; the only tricky part was figuring out a few <a href="http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/">browser inconsistencies</a> and working around those.</p>
<p>If you want to check it out, you can <a href="http://listen.xmradio.com/">sign up for a free 3 day trial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/04/26/xm-radio-online-v20-now-with-ajax/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Proper Flash embedding: FlashObject Best Practices</title>
		<link>http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/</link>
		<comments>http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/#comments</comments>
		<pubDate>Thu, 31 Mar 2005 22:11:10 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/</guid>
		<description><![CDATA[UPDATE (7-24-2005): This page refers to an old version of the FlashObject script. For questions or comments, or to download the script, please refer to the permanent home of the FlashObject script. This post is a continuation of a previous &#8230; <a href="http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p class="note"><strong>UPDATE (7-24-2005):</strong> This page refers to an old version of the FlashObject script. For questions or comments, or to download the script, please refer to the <a href="http://blog.deconcept.com/flashobject/">permanent home of the FlashObject script</a>.</p>
<p>This post is a continuation of a previous post. <a href="http://blog.deconcept.com/2004/10/14/web-standards-compliant-javascript-flash-detect-and-embed/" title="deconcept: Web standards compliant Javascript Flash detect and embed">Read this for more background information on the FlashObject embed method</a>.</p>
<p>In the months since I posted the FlashObject embed I&#8217;ve had a chance to talk to a number of developers and <a href="http://www.snapple.com/" rel="external">use it in</a> <a href="http://www.newjetta.com/" rel="external">a few</a> <a href="http://www.cosmogirl.com" rel="external">high traffic</a> <a href="http://listen.xmradio.com/" rel="external">projects</a>. In doing so I&#8217;ve picked up some tips and best practices that I&#8217;ll be outlining here. I&#8217;ve also revamped the FlashObject script so it&#8217;s a bit more light weight and fixed a few small bugs.</p>
<h4>What&#8217;s new?</h4>
<ol>
<li><strong>Alternate content is no longer written to the page by default</strong> &#8211; You may still use the <code>fo.altText</code> variable to add alternate content to your pages, but it is not recommended. The way to display alternate content in your pages with Flash content would be to place the alternate content on your page, and then specify the ID of the element with your content inside. The FlashObject script then writes your Flash content inside that element, replacing your alternate text/content so the end user with Flash will never see it, but users with no Javascript or without the required Flash version will see the alternate content. Google will also index your alternate content since it is just plain HTML.
<p>Here is an example of what your embed should look like:</p>
<pre><code>&lt;div id="flashcontent"&gt;
  Place your alternate content here and users without the Flash plugin
  or with Javascript turned off will see this.
  Include a link to &lt;a href="?detectflash=false"&gt;bypass the detection&lt;/a&gt;
  if you wish.
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
 // &lt;![CDATA[
  var fo = new FlashObject("fo_tester.swf", "fo_tester", "300", "150", 6, "#336699");
  fo.write("flashcontent");
 // ]]&gt;
&lt;/script&gt;</code></pre>
<p>Because of this change, you should <em>always</em> specify the ID of an element to write your Flash content into. You should also be sure to always include alternate content on the page. If your Flash movie is purely decorational, you can leave the <code>div</code> empty, similar to using empty alt attributes (<code>alt=""</code>) on decorational images. Also note that with the new version you need to place your Javascript that writes the Flash content <em>after</em> the element that will contain your Flash content, as in the example above.</p>
</li>
<li><strong>Support for pulling variables from the URL string when using anchors</strong> &#8211; There have been some <a href="http://www.klynch.com/apps/flashlinking/howto.html" rel="external">discussion</a> about Flash state tracking and direct or &#8216;deep linking.&#8217; Most of the methods rely on parsing variables from the URL when the movie loads, so now you can pull vars out using the built in function <code>getQueryParamValue()</code>.
<p>Example:</p>
<p>If your URL is:</p>
<pre><code>flashobjectpage.html#var1=value1&#038;var2=value2</code></pre>
<p>You can pass those vars into your Flash movie by using the following code:</p>
<pre><code>var fo = new FlashObject("fo_tester.swf", "fo_tester", "300", "150", 6, "#336699");
<strong>fo.addVariable("var1", getQueryParamValue("var1"));
fo.addVariable("var2", getQueryParamValue("var2"));</strong>
fo.write("flashcontent");</code></pre>
<p>The same works for normal URL parameters in URLs such as:</p>
<pre><code>flashobjectpage.html?var1=value1&#038;var2=value2</code></pre>
</li>
</ol>
<p>Just to recap some of the things posted in the <a href="http://blog.deconcept.com/2004/10/14/web-standards-compliant-javascript-flash-detect-and-embed/">previous FlashObject post</a>, here&#8217;s some of the thinking behind the FlashObject embed method:</p>
<h4>Why Javascript?</h4>
<p>Javascript is the best overall solution for a number of reasons, among them:</p>
<ol>
<li><strong>With Javascript you can detect the presence of the Flash Player on your user&#8217;s system and either display the Flash content or leave the existing (X)HTML on the page</strong>. This is also a huge advantage when it comes to search engine indexing since the alternate content is on the page and will be indexed as normal content. This also prevents novice users from seeing Internet Explorer&#8217;s ActiveX install box, which on Windows systems pre-SP2 is a very scary thing these days with all the Spyware and Malware running around on the internet. On most other browsers, you&#8217;ll likely see some empty box where the Flash content should be, sometimes with a broken image or puzzle piece icon which most novice users have no idea what to do with (Should they click on it? Is it part of the site?). If you include well written upgrade/install instructions in your alternate content, all of these problems are avoided.</li>
<li><strong>No Extra configuration files for each Flash movie</strong>. Some alternate methods of embedding Flash content in XHTML documents include using extra configuration files or &#8216;holder&#8217; movies that load in other movies. With this method there is no need for any extra files aside from the single .js file.</li>
<li><strong>Easy to serve different content to different browsers</strong>. I worked on a project recently that made extensive use of the <code>wmode=transparent</code> option. Well when you are using IE or Firefox you can use <code>wmode=transparent</code> with the Flash 6 player, but if you are using Apple&#8217;s Safari browser, you need Flash player 7 to see the content properly. So in the embeds on the page, we required Safari users to have the Flash 7 player, and everyone else the Flash 6 player. Without Javascript we would have had to force everyone to upgrade to Flash player 7, something we didn&#8217;t want to do, even though the Flash 7 player has a pretty high penetration percentage.</li>
</ol>
<h4>Problems with Flash Satay/pure Object tag embedding</h4>
<p>The main issue with using any embed method that uses <em>only</em> <code>object</code> tags to embed any plugin on a page is that Safari ignores the <code>param</code> tags. For very basic embeds this isn&#8217;t a problem, but when you want to start passing in variables or change the background color of the movie without re-publishing it you start to run into problems.</p>
<p>The one area where using pure <code>object</code> tag embeds shine is in using XHTML pages that are sent with a mime type of <code>application/xhtml+xml</code>. Since the FlashObject script uses <code>innerHTML</code> and sometimes <code>document.write</code>, it is not compatible with pages sent with the <code>application/xhtml+xml</code> mime type. Currently I have no plans to update it to work with these pages, as there are many issues with creating <code>object</code> tags using the DOM because almost every browser engine handles it differently and has little quirks that make it very hard to work around. If you are interested in seeing some of the code it would take to embed Flash in XHTML documents, check out the <a href="http://www.mikeindustries.com/blog/archive/2005/02/sifr-2.0-release-candidate-4" rel="external">excellent Javascript that comes along with sIFR 2.0</a>.</p>
<h4>Download</h4>
<p><s><a href="/code/flashobject1-1/flashobject1-1.zip">Download the source to FlashObject 1.1.1.</a></s></p>
<p><a href="/flashobject/flashobject1-3.zip">Download the source to FlashObject 1.3.</a></p>
<p><a href="/flashobject/flashobject.html">View sample pages using FlashObject 1.2 in different Flash embed situations.</a></p>
<p><strong>UPDATE (5-5-2005):</strong> If anyone is interested, Paul Newman has wrapped this script into a <a href="http://www.communitymx.com/abstract.cfm?cid=A9FEC" rel="external">Dreamweaver extension</a>. It costs $15 (or free to CommunityMX subscribers), but if you are a not-so-technical Dreamweaver user I think it would be worth it.</p>
<p><strong>UPDATE (5-17-2005):</strong> Made a small change to the <code>embed</code> tag output. I changed the <code>id</code> attribute to a <code>name</code> attribute as Firefox needs it that way in order to use LiveConnect and talk to the plugin via Javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Safari and links to elements in overflow:auto content</title>
		<link>http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/</link>
		<comments>http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/#comments</comments>
		<pubDate>Sat, 26 Mar 2005 02:26:57 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/</guid>
		<description><![CDATA[I&#8217;m working on a project right now that has some content in div tags with their overflow property set to auto. Then, on another part of the page, there are links that point to elements (using their IDs) inside the &#8230; <a href="http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a project right now that has some content in <code>div</code> tags with their <code>overflow</code> property set to <code>auto</code>. Then, on another part of the page, there are links that point to elements (using their IDs) inside the overflowed <code>div</code> tags (<a href="/code/overflowsafari/overflowsafari.html">See example</a>). This all works just fine in IE6 and Firefox/Mozilla, but Safari wasn&#8217;t behaving. You can click the links all day long, but Safari won&#8217;t scroll the selected anchor into view.</p>
<p>Well, after a few hours of tyring different ways to hack Safari into submission, I decided that the only way I could get it working was to use some Javascript, so I thought I should share the code since there were a few pages on Google also looking for solutions.</p>
<p>Here is what the Javascript looks like:</p>
<pre><code>var targBox = "box";
function init() {
	if (document.getElementById) {
		var atags = document.getElementsByTagName("A");
		for (var i=0;i&lt;atags.length;i++) {
			var ca = atags[i];
			if (ca.href.indexOf("#") &gt; -1) {
				ca.onclick = function() {
					scrollDivToAnchor(this.href.split("#")[1]);
				}
			}
		}
	}
}
function scrollDivToAnchor(a) {
	var b = document.getElementById(targBox);
	b.scrollTop = document.getElementById(a).offsetTop - b.offsetTop;
}
</code></pre>
<p>Sample page with the working code:</p>
<p><a href="/code/overflowsafari/overflowsafarijs.html">View Example</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/03/25/safari-and-links-to-elements-in-overflow-auto-content/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>iVillage.com redesign launched</title>
		<link>http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/</link>
		<comments>http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/#comments</comments>
		<pubDate>Thu, 27 Jan 2005 05:05:25 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/</guid>
		<description><![CDATA[I mentioned that the iVillage entertainment section soft-launched a couple of weeks ago, well now the full site is up and kicking (complete with horrid full screen ads to skip before viewing the front page). It was a very&#8230; ehm&#8230; &#8230; <a href="http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I mentioned that the iVillage entertainment section <a href="/2004/12/21/ivillage-redesign/">soft-launched</a> a couple of weeks ago, well now <a href="" rel="external">the full site is up and kicking</a> (complete with horrid full screen ads to skip before viewing the front page).</p>
<p>It was a very&#8230; ehm&#8230; colorful project to work on :). As mentioned in my <a href="/2004/12/21/ivillage-redesign/">other post</a>, the site is XHTML 1.0 transitional with CSS used for layout, with a little Flash content peppered in there for some extra flavor. More and more of the sites we are working on these days entail an XHTML/CSS layout and then a few Flash movies embedded around in various locations to spice things up a bit, and I have to say it&#8217;s working out great. I really think a lot more designers will go in the direction of hybrid sites rather than the old full Flash site or straight HTML in the coming year.</p>
<p>Another thing to note is the validation problem. It seems that most of the problems (if not all) stem from a few sloppy Javascript embeds and unencoded ampersands that were added in by the iVillage development team. Unfortunately with the way the site was developed &#8211; doing the design and template coding first, then integrating those files with the content management system &#8211; and without someone on the development side constantly cracking the validation whip, I suppose these things are bound to happen.</p>
<p>Anyway, enjoy the site: <a href="http://www.ivillage.com/" rel="external">www.ivillage.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web standards compliant Javascript Quicktime detect and embed</title>
		<link>http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/</link>
		<comments>http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/#comments</comments>
		<pubDate>Wed, 26 Jan 2005 05:05:40 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/</guid>
		<description><![CDATA[Due to the popularity of my FlashObject embed, I decided to create a helpful little Javascript file for doing detection and embedding QuickTime movies. Embedding QuickTime movies in websites presents many of the same problems as embedding Flash. Since QuickTime &#8230; <a href="http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Due to the popularity of my <a href="http://blog.deconcept.com/2004/10/14/web-standards-compliant-javascript-flash-detect-and-embed/">FlashObject embed</a>, I decided to create a helpful little Javascript file for doing detection and embedding QuickTime movies.</p>
<p>Embedding QuickTime movies in websites presents many of the same problems as embedding Flash. Since QuickTime relies on a third party plugin, your users will need to have this plugin installed before they can view your content. If they don&#8217;t have the plugin, they will be greeted by either an AcitveX install window (Internet Explorer) or an ugly &#8216;broken plugin&#8217; image on other browsers. I prefer using Javascript to detect the presence of plugins because it gives you more control over what your users see when they visit your site. Most web browsers handle plugin installs terribly, often giving the user cryptic looking placeholders (broken puzzle pieces) or strange sounding legal notices on ActiveX install dialogs (of which people may have been trained to always say &#8216;no&#8217; to since the same dialog box will often install spyware).</p>
<p>Anyway, enough chit-chat. On to the Javascript:</p>
<p>To use the <a href="/code/qtobject/qtobject.html">QTObject embed</a>, you simply create a new QTObject, add the parameters you want, and then write it to the page. The script will check to see whether the QuickTime plugin is available and write the embed code to the page or the alternate content if the user doesn&#8217;t have the required plugin. Here is an example of what a simple movie embed would look like (I used a fun little video I found floating around the Internet as a sample movie, but it can be any .jpg, .gif, .png, or even another .mov file.): (<a href="/code/qtobject/qtobject_simple.html">View Example</a>)</p>
<blockquote><p><code>var myQTObject = new QTObject("bushuncensored.mov", "bushfinger", "320", "255");<br />
myQTObject.addParam("autostart", "false");<br />
myQTObject.write();<br />
</code></p></blockquote>
<p>In this example the &#8216;<code>myQTObject.addParam()</code>&#8216; isn&#8217;t needed, but it&#8217;s a nice addition that will keep the movie from starting before the user figures out what they are looking at.</p>
<p>The parameters from left to right are the path to the mov file, the ID of the mov file, the width, and then the height of the file. If you are showing the QuickTime controls, you need to add 15 pixels or so to the height of the movie or the controls will be pushed down and the user won&#8217;t be able to see them.</p>
<p>If you want to do some more advanced embedding, such as the method Apple uses on <a href="http://www.apple.com/trailers/touchstone/hitchhikers_guide_to_the_galaxy.html" rel="external">their QuickTime site</a>, your code would look something like this: (<a href="/code/qtobject/qtobject.html">View Example</a>)</p>
<blockquote><p><code>var myQTObject = new QTObject("bushplaceholder.jpg", "bushfinger", "320", "255");<br />
myQTObject.addParam("href", "bushuncensored.mov");<br />
myQTObject.addParam("target", "myself");<br />
myQTObject.addParam("controller", "false");<br />
myQTObject.write();<br />
</code></p></blockquote>
<p>This uses a few extra parameters that allow you to use a placeholder image that will load in the place of your movie until the user clicks on it. Your movie would then load in the place of the image and start when it has loaded enough to start playing. You simply replace the mov source from the first example with your placeholder image (you remembered to add 15 pixels to the height of the image to account for the QuickTime controls, right?) and then an extra few parameters to tell the QuickTime embed where to find the real movie, the target QuickTime object, and finally telling it to hide the controls before the real movie loads.</p>
<p>There is also the option of redirecting the user to another page if there is no QuickTime plugin found by using this code: <code>myQTObject.redirect = "upgradepage.html";</code>, and there is a built in bypass of the detect script by including <code>detectqt=false</code> in the query string when you request the page. This link is included in the &#8216;upgrade&#8217; notice so if for some reason a user has QuickTime installed but the Javascript detect fails, they can still attempt to view the QuickTime content.</p>
<p>Also, be sure you use this in combination with <code>&lt;noscript&gt;</code> tags just in case some of your users have Javascript disabled.</p>
<p>That&#8217;s it! Since it uses Javascript to create the <code>embed</code> and <code>object</code> tags, it will validate as XHTML 1.0 (strict or transitional). Please note that it will not work with pages sent as <code>application/xhtml+xml</code> since it uses <code>innerHTML</code> and <code>document.write()</code>. Another note: I&#8217;m not checking for the version of the QuickTime plugin installed, and I couldn&#8217;t find any older QuickTime players for testing, so I&#8217;m not sure how this will treat users who are using QuickTime 4 to view content that requires QuickTime 6. I seem to remember QuickTime having an auto-update feature or some built in notification if you need to upgrade, so I&#8217;m not too worried about it, but if anyone has some experience in this area, I&#8217;d love to hear how this embed method behaves under those circumstances.</p>
<p>I&#8217;ve tested this on IE 6, 5.0, 5.5 on PC, Firefox on Mac and PC, and Opera and Safari on Mac. It has worked great every time, but everyone knows there can always be little bugs that pop up, so if anyone finds something wrong with the code, <a href="mailto:geoff@deconcept.com">let me know</a>.</p>
<p><a href="http://blog.deconcept.com/code/qtobject/qtobjectembed.zip">Download source and example files (1.09MB)</a></p>
<p><strong>UPDATE (02-11-2005):</strong> Just fixed a few bugs &#8211; one that was giving problems if the user didin&#8217;t have QuickTime installed on Internet Explorer for PC, and adjusted the default Alternate text.</p>
<p><strong>UPDATE (02-16-2005):</strong> Not sure how something like this slipped past, but <a href="http://www.sixbillion.org/" rel="external">Thiago</a> found a little bug in the VB Script that was giving some problems in IE on a PC. The files have all been updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
		<item>
		<title>100% height and 100% width XHTML Flash embed</title>
		<link>http://blog.deconcept.com/2005/01/02/100-height-and-100-width-xhtml-flash-embed/</link>
		<comments>http://blog.deconcept.com/2005/01/02/100-height-and-100-width-xhtml-flash-embed/#comments</comments>
		<pubDate>Sun, 02 Jan 2005 19:45:37 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2005/01/02/100-height-and-100-width-xhtml-flash-embed/</guid>
		<description><![CDATA[I&#8217;ve been asked this question a few times in the last couple of months, so I thought I would put together an example page to show how you can get Flash content to stretch to 100 percent height and width &#8230; <a href="http://blog.deconcept.com/2005/01/02/100-height-and-100-width-xhtml-flash-embed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been asked this question a few times in the last couple of months, so I thought I would put together an example page to show how you can get Flash content to stretch to 100 percent height and width without using tables.</p>
<p><a href="http://blog.deconcept.com/flashobject/fullpage.html">View example: 100% width and height stretched Flash embed.</a></p>
<p>It&#8217;s actually pretty simple. Here&#8217;s some of the CSS I used:</p>
<blockquote><pre class="code">/* hide from ie5 mac &#92;*/
html {
  height: 100%;
  overflow: hidden;
}
#flashcontent {
  height: 100%;
}
/* end hide */
body {
  height: 100%;
  margin: 0;
  padding: 0;
  background-color: #eee;
}</pre>
</blockquote>
<p>Setting the <code>html</code> tag to 100% height and then placing the Flash movie inside a <code>div</code> that is also set to 100% height does the trick.</p>
<p>Notice the <code>overflow: hidden</code> on the <code>html</code> element since IE will show the scrollbar even if the page doesn&#8217;t need to scroll. This line will force IE to hide any content that is outside of the browser window, and therefore hide the scrollbar as well.</p>
<p>To embed the Flash movie, I used my <a href="http://blog.deconcept.com/2004/10/14/web-standards-compliant-javascript-flash-detect-and-embed/">FlashObject</a> Javascript embed so the page will validate and I have access to all the various Flash parameters I might need to pass to the Flash movie.</p>
<p><strong>UPDATE (01-05-2005):</strong> <a href="http://chattyfig.figleaf.com/ezmlm/ezmlm-cgi?1:mss:127980:lhckgnlecmaileoflhig" rel="external">Someone pointed out</a> a bug with this in IE 5 on Macintosh, so I&#8217;ve updated the CSS a bit to make it work. Current verified working browsers are: IE 6 (PC), IE 5 (Mac), Safari, Firefox (PC, Mac), Mozilla (PC, Mac), Opera 7.54 (Mac).</p>
<p><s>If you have other browsers available for testing I would love to know if this displays properly or not. I&#8217;m mainly interested in IE 5 and 5.5 on a PC.</s></p>
<p><strong>UPDATE (1-17-05): </strong> Tested in IE 5.01 sp2 and IE 5.5 sp2 on a pc today, and it works great.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2005/01/02/100-height-and-100-width-xhtml-flash-embed/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>iVillage Redesign</title>
		<link>http://blog.deconcept.com/2004/12/21/ivillage-redesign/</link>
		<comments>http://blog.deconcept.com/2004/12/21/ivillage-redesign/#comments</comments>
		<pubDate>Tue, 21 Dec 2004 22:33:00 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2004/12/21/ivillage-redesign/</guid>
		<description><![CDATA[For some reason nobody told me that the iVillage redesign that we did was partially launched last month. This was one of the first projects I worked on when I moved to New York. We decided on a CSS layout &#8230; <a href="http://blog.deconcept.com/2004/12/21/ivillage-redesign/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For some reason nobody told me that the <a href="http://entertainment.ivillage.com/" rel="external">iVillage redesign that we did was partially launched last month</a>.</p>
<p>This was one of the first projects I worked on when I moved to New York. We decided on a CSS layout using XHTML 1.0 transitional (sent as text/html), with some Flash peppered around. Right now only the entertainment section is using the new design, with the other sections to follow as their internal team takes our template and adapts the content in the other sections. Unfortunately the site doesn&#8217;t validate because of one <a href="http://validator.w3.org/check?verbose=1&#038;uri=http%3A//entertainment.ivillage.com/" rel="external">little error(!)</a> that I&#8217;ll be passing along to their internal team along with a few small visual errors to fix.</p>
<p>It uses a similar method to the <a href="http://www.alistapart.com/articles/dropdowns/" rel="external">suckerfish dropdowns</a> for the flyout menus on the left navigation, and some basic CSS rollovers for the main navigaion tabs at the top.</p>
<p>I would have liked to use my <a href="http://blog.deconcept.com/2004/10/14/web-standards-compliant-javascript-flash-detect-and-embed/">FlashObject</a> embed for the Flash content, but this was handed over to their internal team way before I had even thought it up, so it uses generic Javascript to detect and embed the Flash movies.</p>
<p><strong>UPDATE (12-22-2004):</strong> Looks like the one validation error was in some content that has now rotated off of the homepage, so now <a href="http://validator.w3.org/check?verbose=1&#038;uri=http%3A//entertainment.ivillage.com/" rel="external">it validates!</a></p>
<p><strong>UPDATE (01-31-2005):</strong> <a href="http://blog.deconcept.com/2005/01/27/ivillage-redesign-launched/">The whole site went live this week</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2004/12/21/ivillage-redesign/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Standardizing Flash</title>
		<link>http://blog.deconcept.com/2004/11/15/standardizing-flash/</link>
		<comments>http://blog.deconcept.com/2004/11/15/standardizing-flash/#comments</comments>
		<pubDate>Mon, 15 Nov 2004 15:10:00 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2004/11/15/standardizing-flash/</guid>
		<description><![CDATA[Tommy over at Autistic Cuckoo has posted a little writeup on what&#8217;s next for Web Standards. Among his list of things is this: [there are still many sites that] require third-party products such as Flash to work I think this &#8230; <a href="http://blog.deconcept.com/2004/11/15/standardizing-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tommy over at <a href="http://www.autisticcuckoo.net/" rel="external">Autistic Cuckoo</a> has posted <a href="http://www.autisticcuckoo.net/archive.php?id=2004/11/15/whats-next" rel="external">a little writeup on what&#8217;s next for Web Standards</a>. Among his list of things is this:</p>
<blockquote><p>[there are still many sites that] <em>require</em> third-party products such as Flash to work</p>
</blockquote>
<p>I think this point should be looked at from the other side of the fence. Flash is not going away. It&#8217;s way way too popular and useful for too many websites.</p>
<p>Once you think of it like this, the problem becomes how tough it is to use Flash in a way that doesn&#8217;t invalidate your documents, which is where I think much more fucus needs to go these days.</p>
<p>Standardize the browser plugin architecture and I bet you&#8217;ll see way more XHTML valid Flash websites.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2004/11/15/standardizing-flash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why it&#8217;s OK to send XHTML as text/html</title>
		<link>http://blog.deconcept.com/2004/11/03/why-its-ok-to-send-xhtml-as-text-html/</link>
		<comments>http://blog.deconcept.com/2004/11/03/why-its-ok-to-send-xhtml-as-text-html/#comments</comments>
		<pubDate>Wed, 03 Nov 2004 17:46:27 +0000</pubDate>
		<dc:creator>Geoff</dc:creator>
				<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.deconcept.com/2004/11/03/why-its-ok-to-send-xhtml-as-text-html/</guid>
		<description><![CDATA[I was recently dragged in to an argument about whether or not it&#8217;s ok to send XHTML files with a mime type of text/html instead of application/xhtml+xml. It seems that there are a few people spreading the word that sending &#8230; <a href="http://blog.deconcept.com/2004/11/03/why-its-ok-to-send-xhtml-as-text-html/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was recently <a href="http://juicystudio.com/all-in-the-mime.asp" rel="external">dragged in</a> to an argument about whether or not it&#8217;s ok to send XHTML files with a mime type of <code>text/html</code> instead of <code>application/xhtml+xml</code>.</p>
<p>It seems that there are <a href="http://www.autisticcuckoo.net/archive.php?id=2004/10/25/pretend-xhtml" rel="external">a few people</a> <a href="http://annevankesteren.nl/archives/2004/07/mime" rel="external">spreading the word</a> that sending XHTML documents as <code>text/html</code> is not only improper, but downright bad for you (gasp!). The basic argument goes something like this: </p>
<blockquote><p><em>Dude[ette] sends XHTML document as <code>text/html</code> instead of <code>application/xhtml+xml</code> and therefore is gaining no advantage over plain old HTML 4.01. Since XHTML &#8216;should&#8217; be sent as <code>application/xhtml+xml</code>, doing it any other way is wrong and you will burn in hell. Instead you should use HTML 4.01 because more browsers understand it, and when the time comes to switch, you can just use <a href="http://www.w3.org/People/Raggett/tidy/" rel="external">HTML tidy</a> or make the small changes your pages need by hand.</em></p>
</blockquote>
<p>Ok, I added the &#8216;burn in hell&#8217; part, but you get the general idea.</p>
<p>Now I&#8217;m not going to go into why you should use <code>application/xhtml+xml</code> or all the benefits and differences between that and <code>text/html</code>. Instead, I&#8217;m going to let you read up on the subject yourself, and then tell you why it&#8217;s quite acceptable to keep on using <code>text/html</code> for the time being.</p>
<p>All of these links are full of excellent information and everyone building XHTML websites should know this whether they agree with them or not. Go ahead and take a few moments to read them. I&#8217;ll wait here.</p>
<ul>
<li><a href="http://hixie.ch/advocacy/xhtml" rel="external">Sending XHTML as <code>text/html</code> Considered Harmful</a></li>
<li><a href="http://www.ietf.org/rfc/rfc3236.txt" rel="external">RFC 3236: The &#8216;<code>application/xhtml+xml</code>&#8216; Media Type</a></li>
<li><a href="http://www.autisticcuckoo.net/archive.php?id=2004/10/25/pretend-xhtml" rel="external">Pretending to Use XHTML</a></li>
</ul>
<p>Ok. Wasn&#8217;t that fun? Now here are some reasons why sending your XHTML pages as <code>text/html</code> is just fine. It is important to realize that the real argument here is not whether they should be sent as <code>application/xhtml+xml</code> or not, but what to serve as an alternative to user agents that can&#8217;t support it, such as IE.</p>
<p>1) <strong>XHTML 1.0 is like a gateway drug.</strong> It&#8217;s not HTML, and it&#8217;s not quite XML, but it&#8217;s a nice middle ground. It teaches you to close your tags, use lowercase attributes, always quote your attributes, never &#8216;minimize&#8217; your attributes, and a few more. All of these are outlined here: <a href="http://www.w3.org/TR/xhtml1/#diffs" rel="external">The difference between XHTML 1 and HTML 4</a>. This is a great benifit in that it teaches developers to follow stricter rules when building pages, and when the time eventually comes when they need to switch to <code>application/xhtml+xml</code>, there will be fewer changes to worry about than with HTML 4.</p>
<p>2) <strong><a href="http://www.w3.org/TR/xhtml1/#media" rel="external">The XHTML standard allows you to use <code>text/html</code></a>.</strong> A short excerpt:</p>
<blockquote><p>XHTML Documents which follow the guidelines set forth in Appendix C, &#8220;HTML Compatibility Guidelines&#8221; may be labeled with the Internet Media Type &#8220;text/html&#8221; [RFC2854], as they are compatible with most HTML browsers.</p>
</blockquote>
<p>So the way I see things is that sending XHTML as <code>text/html</code> isn&#8217;t a bad thing at all. Using XHTML teaches developers to write well-formed documents, and teaches them the basics of XML, which will be more and more valuable as we progress from HTML to XML documents on the web. I think it&#8217;s important that people know the differences when sending documents with different mime types, but discouraging the use of XHTML sent as <code>text/html</code> doesn&#8217;t help anyone, and telling them there are no advantages at all is misleading.</p>
<p>Other reading:</p>
<ul>
<li><a href="http://www.molly.com/2004/07/31/doctypes-not-relevant/" rel="external">DOCTYPES not relevant?</a></li>
<li><a href="http://www.w3.org/TR/xhtml-media-types/" rel="external">XHTML Media Types</a></li>
<li><a href="http://www.webstandards.org/learn/askw3c/sep2003.html" rel="external">Serving XHTML with the Right MIME Type</a></li>
</ul>
<p><strong>UPDATE (11-10-2004):</strong> I just came across <a href="http://www.autisticcuckoo.net/archive.php?id=2004/11/03/content-negotiation" rel="external">this post about content negotiation</a> and saw an excellent conversation in the comments about converting your XHTML to HTML and the issues you will encounter.</p>
<p>One of the readers makes <a href="http://www.autisticcuckoo.net/archive.php?id=2004/11/03/content-negotiation#comment-12" rel="external">this point</a>:</p>
<blockquote><p>Your situation is different, though. I totally agree that XHTML should be served as application/xhtml+xml to browsers that support it. With respect to IE, you have some choices.</p>
<p>You could just serve it the XHTML content as text/html. Provided you&#8217;ve authored it in HTML-compatibility mode, IE will handle that perfectly well (or, at least, no worse than it handles HTML4).</p>
<p>Alternatively, you could decide, as you apparently have done, to serve IE HTML4, using a conversion that</p>
<p>1) only works with XHTML written in compatibility mode</p>
<p>2) runs the risk of seriously munging your text. (This is, after all, a weblog about web design!)</p>
<p>What&#8217;s the <em>benefit</em> of doing this instead of just sending IE the unaltered XHTML document (as text/html)?
</p>
</blockquote>
<p>And the <a href="http://www.autisticcuckoo.net/archive.php?id=2004/11/03/content-negotiation#comment-13" rel="external">response</a>:</p>
<blockquote><p>Nothing, probably. I&#8217;m reworking the &#8220;CMS&#8221; at the moment, and if I ever finish it, I will use a better system for converting to HTML. In fact, since XHTML is currently useless unless you actually need it (like your blog), I&#8217;m thinking about serving HTML 4.01 Strict to all. I&#8217;ll still store the posts as XML, though, for various reasons, so some kind of rewriting will be necessary.</p>
</blockquote>
<p>So it seems to me that the optimal solution for <em>most</em> websites these days would be this:</p>
<ol>
<li>Author your pages as XHTML 1.0 strict or transitional in &#8216;<a href="http://www.w3.org/TR/xhtml1/#guidelines" rel="external">compatibility mode</a>&#8216;</li>
<li>Use content negotiation to send <code>application/xhtml+xml</code> pages to user agents that favor XHTML content</li>
<li>For user agents that <em>don&#8217;t</em> like <code>application/xhtml+xml</code>, send them &#8216;compatible&#8217; XHTML 1.0 as <code>text/html</code></li>
</ol>
<p>This way user agents that can handle XHTML get it, and if the user agent doesn&#8217;t understand <code>application/xhtml+xml</code>, you will have a very minimal amount of work on the server side to convert your XML content to &#8216;compatible&#8217; XHTML.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deconcept.com/2004/11/03/why-its-ok-to-send-xhtml-as-text-html/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
	</channel>
</rss>

