<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jake Opines : Browsers, JavaScript</title><link>http://www.atalasoft.com/cs/blogs/jake/archive/tags/Browsers/JavaScript/default.aspx</link><description>Tags: Browsers, JavaScript</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Events to Expect when Dynamically Loading iFrames in JavaScript - Take 2 (thanks Firefox 3.5)</title><link>http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx</link><pubDate>Tue, 18 Aug 2009 17:55:52 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:19140</guid><dc:creator>jacobl</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/jake/comments/19140.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/jake/commentrss.aspx?PostID=19140</wfw:commentRss><description>&lt;p&gt;Just two months ago, I wrote a post on the &lt;a href="http://www.atalasoft.com/cs/blogs/jake/archive/2009/06/18/events-to-expect-when-dynamically-loading-iframes-in-javascript.aspx" target="_blank"&gt;JavaScript events you could expect when loading iFrames dynamically&lt;/a&gt;. Since the behavior highly depends on the browser you are using and the whims of the developer who decided what to fire and when, I put together a nice table of Browser v. Content-Disposition listing the events and any return codes that come along with them.&lt;/p&gt;  &lt;p&gt;This is where it all falls apart. With Firefox 3.5, it appears as though my table must change. Firefox no longer fires &lt;strong&gt;onload&lt;/strong&gt; when the Content-Disposition is set to Attachment. This is the same behavior that can be expected in Safari and Chrome. Even though it appears as though there's a growing consensus outside of the IE camp, I do &lt;strong&gt;not&lt;/strong&gt; think it's moving in the right direction. (IE's behavior is clearly the best here: more, specific, expected)&lt;/p&gt;  &lt;p&gt;Disappointedly, I'm posting this updated table depicting the events you &lt;em&gt;should&lt;/em&gt; expect when dynamically loading iFrames:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/EventstoExpectwhenDynamicallyLoadingiF.5_C3EF/tmp4673_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="143" alt="tmp4673" src="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/EventstoExpectwhenDynamicallyLoadingiF.5_C3EF/tmp4673_thumb.png" width="434" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Thanks for nothing.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;;subject=Events+to+Expect+when+Dynamically+Loading+iFrames+in+JavaScript+-+Take+2+(thanks+Firefox+3.5)" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;;title=Events+to+Expect+when+Dynamically+Loading+iFrames+in+JavaScript+-+Take+2+(thanks+Firefox+3.5)" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;title=Events+to+Expect+when+Dynamically+Loading+iFrames+in+JavaScript+-+Take+2+(thanks+Firefox+3.5)" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;;title=Events+to+Expect+when+Dynamically+Loading+iFrames+in+JavaScript+-+Take+2+(thanks+Firefox+3.5)" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx&amp;amp;;title=Events+to+Expect+when+Dynamically+Loading+iFrames+in+JavaScript+-+Take+2+(thanks+Firefox+3.5)&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=19140" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/Browsers/default.aspx">Browsers</category></item><item><title>Caching JavaScript on Your Terms</title><link>http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx</link><pubDate>Sun, 19 Jul 2009 13:34:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:18809</guid><dc:creator>jacobl</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/jake/comments/18809.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/jake/commentrss.aspx?PostID=18809</wfw:commentRss><description>&lt;p&gt;Browsers tend to do what they like with your &lt;i&gt;static &lt;/i&gt;content: deciding what to cache and when to refresh. On the server-side, you can specify that certain file types have a designated TTL (time to live) and that works in many cases. There are other cases when you either don't have access to the server's configuration or you need to make sure everyone has the latest bits of JavaScript. &lt;/p&gt;  &lt;p&gt;With every release of VizitSP, our &lt;a href="http://www.vizitsp.com/" target="_blank"&gt;SharePoint Document Viewer&lt;/a&gt;, we need to make sure that users get all of the changes we've made. To achieve this, there's a very easy trick that can keep our files cached exactly as long as they need to be and it involves &lt;i&gt;le query string&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What the HTTP Caching Specification Says&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;ThinkVitamin posted an article about &lt;a href="http://carsonified.com/blog/features/webapps/serving-javascript-fast/" target="_blank"&gt;the correct way to pull off browser caching while playing by the rules&lt;/a&gt;. This is a great way of doing things; and, if you control the server your site is running on, please do that; however, if you're a component or an installable product like our Vizit, you might not be offered that liberty.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;According [to] the letter of the HTTP caching specification, user agents should &lt;i&gt;&lt;b&gt;never&lt;/b&gt;&lt;/i&gt; cache URLs with query strings. While Internet Explorer and Firefox ignore this, Opera and Safari don’t - to make sure all user agents can cache your resources, we need to keep query strings out of their URLs.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Supporting only IE and Firefox didn't sound that attractive to me, so I decided to do a bit of research. Digging &lt;a href="http://www.webmasterworld.com/html/3622291.htm" target="_blank"&gt;around the net&lt;/a&gt;, I found out that Safari stores its cache in &lt;/p&gt;  &lt;div style="border:1px solid gray;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;   &lt;div style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;     &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;background-color:white;"&gt;&lt;span&gt;   1:&lt;/span&gt; C:\Documents and Settings\[username]\Local Settings\Application Data\Apple Computer\Safari\cache.db&lt;/pre&gt;  &lt;/div&gt;&lt;/div&gt;&lt;p&gt;It's a SQLite database, so a quick download of the &lt;a href="http://www.singular.gr/sqlite/" target="_blank"&gt;free Sqlite3Explorer tool&lt;/a&gt; made querying this very easy. &lt;/p&gt;&lt;div style="border:1px solid gray;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;  &lt;div style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;background-color:white;"&gt;&lt;span&gt;   1:&lt;/span&gt; sqlite&amp;gt; select request_key from cfurl_cache_response LIMIT 735,5;&lt;/pre&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;&lt;span&gt;   2:&lt;/span&gt; http:&lt;span&gt;//graphics8.nytimes.com/js/app/lib/NYTD/0.0.1/tooltip.js&lt;/span&gt;&lt;/pre&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;background-color:white;"&gt;&lt;span&gt;   3:&lt;/span&gt; http:&lt;span&gt;//graphics8.nytimes.com/images/global/icons/feed_icon_16x16.gif&lt;/span&gt;&lt;/pre&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;&lt;span&gt;   4:&lt;/span&gt; http:&lt;span&gt;//&lt;b&gt;&lt;font color="#ff0000"&gt;graphics8.nytimes.com/js/app/analytics/gw.js&lt;/font&gt;&lt;font color="#0000ff"&gt;?csid=H07707&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;background-color:white;"&gt;&lt;span&gt;   5:&lt;/span&gt; http:&lt;span&gt;//graphics8.nytimes.com/js/app/analytics/revenuescience.js&lt;/span&gt;&lt;/pre&gt;    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;line-height:12pt;font-family:consolas,'Courier New',courier,monospace;"&gt;&lt;span&gt;   6:&lt;/span&gt; &lt;a href="http://graphics8.nytimes.com/js/app/analytics/controller_v1.1.js"&gt;http:&lt;span&gt;//graphics8.nytimes.com/js/app/analytics/controller_v1.1.js&lt;/span&gt;&lt;/a&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;/div&gt;&lt;p&gt;What do we have here? A static file (js extension) &lt;b&gt;with&lt;/b&gt; a query string in Safari's cache.&lt;/p&gt;&lt;p&gt;This got me thinking about Opera and Chrome... luckily, they make it trivial to browse their cache using the &lt;i&gt;about:cache&lt;/i&gt; URL. This is what I found:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/CachingJavaScriptonYourTerms_A0FF/tmpCD24_2.png"&gt;&lt;img src="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/CachingJavaScriptonYourTerms_A0FF/tmpCD24_thumb.png" style="border-width:0px;" alt="Chrome" border="0" height="155" width="440"&gt;&lt;/a&gt;   &lt;br&gt;&lt;i&gt;chrome&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/CachingJavaScriptonYourTerms_A0FF/tmpCD26_2.png"&gt;&lt;img src="http://www.atalasoft.com/cs/blogs/jake/WindowsLiveWriter/CachingJavaScriptonYourTerms_A0FF/tmpCD26_thumb.png" style="border-width:0px;" alt="tmpCD26" border="0" height="146" width="440"&gt;&lt;/a&gt;   &lt;br&gt;&lt;i&gt;opera&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Cool huh? It appears as though IE, Firefox, Safari, Opera, and Chrome ignore this bit of the spec and I'm OK with that.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Versioning Your Static Content&lt;/b&gt;&lt;/p&gt;&lt;p&gt;It's important that you update your version query string parameter with every release or this technique wont work. With Vizit, we do it as part of our build process. Everywhere in the code that includes a JavaScript file we append &lt;i&gt;'?ver=VIZIT_VERSION'&lt;/i&gt;. At build time, we sift through all the files and replace that with the version number of our assemblies. Very nice indeed.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Results&lt;/b&gt;&lt;/p&gt;&lt;p&gt;On its first load with an empty cache, an upcoming release of VizitSP weighs in at about 420 KB. That small size is achieved through &lt;a href="http://www.atalasoft.com/cs/blogs/jake/archive/2008/12/22/spritify-writing-a-css-image-sprite-generator-with-dotimage.aspx" target="_blank"&gt;CSS image spriting&lt;/a&gt;, &lt;a href="http://developer.yahoo.com/yui/compressor/" target="_blank"&gt;JavaScript compression&lt;/a&gt;, concatenation, and the SharePoint Web Front Ends gzipping it all; however, a second load will see that size drop to a measly 75 KB. Compare that to the New Your Times homepage which weighed in at 763 KB on first load, only dropping to 370 KB after cached. While the New York Times is a &lt;b&gt;news &lt;/b&gt;site which means much more of it needs to be refreshed all the time, taking advantage of the fact that Vizit can update at will makes for a very nimble and fast-loading web application.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;;subject=Caching+JavaScript+on+Your+Terms" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;;title=Caching+JavaScript+on+Your+Terms" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;title=Caching+JavaScript+on+Your+Terms" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;;title=Caching+JavaScript+on+Your+Terms" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx&amp;amp;;title=Caching+JavaScript+on+Your+Terms&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/19/caching-javascript-on-your-terms.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=18809" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/Browsers/default.aspx">Browsers</category></item><item><title>Flash, Silverlight just Stop-Gaps</title><link>http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx</link><pubDate>Mon, 06 Jul 2009 13:31:01 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:18778</guid><dc:creator>jacobl</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/jake/comments/18778.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/jake/commentrss.aspx?PostID=18778</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;The F.U.D.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There has been a lot of talk in the past few weeks about HTML 5 and its supposed takeover on the web (or lack thereof). It's only a matter of time before Flash and Silverlight become less relevant. The CEO of Adobe, Shantanu Narayen, defended their position in the future of the web during the company's &lt;a href="http://blogs.adobe.com/jd/2009/06/adobe_on_html5.html" target="_blank"&gt;last quarterly financial call&lt;/a&gt;, saying:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;So [, we're] clearly supportive in terms of making sure as HTML 5 is evolving that we will support it in our web authoring tools but from the perspective of continuing to drive Flash and innovation around Flash and rich Internet applications, we still think that actually the fragmentation of browsers makes Flash even more important rather than less important.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The part of the question that he is dodging here is how a more powerful and more broadly supported standard will affect Flash in the long term.&lt;/p&gt;  &lt;p&gt;Recently, &lt;a href="http://www.infoworld.com/d/developer-world/html-5-could-it-kill-flash-and-silverlight-291" target="_blank"&gt;InfoWorld posted an article&lt;/a&gt; about this very topic. It's a good read and the author gets a lot of things right. He talks about how IE will be a critical milestone for HTML 5 to overcome:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The exception is Microsoft, which therefore is in a difficult situation, says Almaer. The company has heavy investments in trying to propel Silverlight to dominance. &amp;quot;That's a big elephant in the room for them because you can imagine the Silverlight team [whose] whole existence is to add [this] functionality in. [But] if Internet Explorer puts it already in there, why do we have Silverlight?&amp;quot; he asks.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Good question. What incentive does Microsoft have, from a Silverlight perspective, to further the advancement of HTML 5? When IE adds support for all of the capabilities that Silverlight has to offer directly into the browser, does Silverlight still need to exist? No, it doesn't. It's arguably in Microsoft's best interest to keep its feet stuck in the mud and continue to not be a 'standards-based' browser.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Push&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This roadblock is ever more apparent with the announcement of Firefox 3.5 RC. It, along with Safari and Chrome, already support much of what HTML 5 has coming up in the pipeline. Internet Explorer is the only major player that is mum on the subject.&lt;/p&gt;  &lt;p&gt;Fortunately, the push for more advanced capabilities in the HTML standard is so great that some of IE's shortcomings can be sidestepped. There is a project put together by Google on SourceForge called ExplorerCanvas. It allows for 2D command-based drawing. Browsers like Safari, Firefox, Chrome and Opera all support the HTML5 canvas... but Internet Explorer does not. The ExplorerCanvas project overcomes this by taking Microsoft's Vector Markup Language and wrapping it in JavaScript to create the desired effect. The &lt;a href="http://www.atalasoft.com/products/dotimage/thinclient/" target="_blank"&gt;DotImage Web Annotation Viewer&lt;/a&gt; that we use in our &lt;a href="http://www.vizitsp.com/Products/VizitSP" target="_blank"&gt;SharePoint Document Viewer&lt;/a&gt;, VizitSP, employs the ExplorerCanvas to let users author annotations in a very natural way.&lt;/p&gt;  &lt;p&gt;Another example of this push is Kroc Camen's recent publication of &lt;a href="http://camendesign.com/code/video_for_everybody" target="_blank"&gt;Video for Everyone&lt;/a&gt;. By using the upcoming &amp;lt;video&amp;gt; tag along with Flash and Quicktime object tags, he is able to provide a series of fallbacks that can offer HTML5 love to people who deserve it while providing an acceptable experience for those who don't.&lt;/p&gt;  &lt;p&gt;One area where I think InfoWorld gets it wrong is in its comment about Google's possible apprehension toward pushing the new standard:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;..its YouTube subsidiary uses Flash for its video, but the inclusion of HTML 5 capabilities in browsers might cause YouTube to rethink that decision, notes Fette. &amp;quot;It's a cost/benefit analysis that they'd need to make.&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For a couple months now, YouTube has had &lt;a href="http://www.youtube.com/html5" target="_blank"&gt;an HTML 5 demo&lt;/a&gt; available on its site. The example shows that, with a capable browser, you can view video without any codecs or plugins. It just works. YouTube has clearly already begun to invest the time into moving away from Flash as soon as it's feasible. Without much effort, YouTube could begin serving up HTML5 video to those browsers that support it. To push the envelope even further, YouTube could add features to the HTML5 version that are either &lt;a title="Requires Firefox 3.5" href="http://people.mozilla.com/~prouget/demos/round/index.xhtml" target="_blank"&gt;not&lt;/a&gt; &lt;a title="Requires Firefox 3.5" href="http://people.mozilla.com/~prouget/demos/mashup/video.xhtml" target="_blank"&gt;possible&lt;/a&gt; to do in Flash or just as an incentive to get people to use &lt;a href="http://www.google.com/chrome" target="_blank"&gt;better browsers&lt;/a&gt;... or to give IE a hint.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Point&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The point here is that we can't allow such a fundamental piece to the future of the Internet rely on &lt;em&gt;plugins&lt;/em&gt;. Something that is so core to the direction that the web is vectored toward deserves to be treated as such: core. While it might take us a while to get there, we will --even if it means dragging the old browsers kicking and screaming behind us. Until then, Flash and Silverlight can rule the roost.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;;subject=Flash%2c+Silverlight+just+Stop-Gaps" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;;title=Flash%2c+Silverlight+just+Stop-Gaps" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;title=Flash%2c+Silverlight+just+Stop-Gaps" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;;title=Flash%2c+Silverlight+just+Stop-Gaps" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx&amp;amp;;title=Flash%2c+Silverlight+just+Stop-Gaps&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/jake/archive/2009/07/06/flash-silverlight-just-stop-gaps.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=18778" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/Browsers/default.aspx">Browsers</category><category domain="http://www.atalasoft.com/cs/blogs/jake/archive/tags/HTML5/default.aspx">HTML5</category></item></channel></rss>