<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5114326810987056832</id><updated>2011-08-04T08:18:11.842-07:00</updated><category term='buzzwords'/><category term='MSSQL'/><category term='return'/><category term='Team Foundation Server'/><category term='hyper-v'/><category term='animation freezing'/><category term='SQL'/><category term='Timex'/><category term='onclick'/><category term='connection'/><category term='SQL Server'/><category term='new beginnings'/><category term='aaronwball.com'/><category term='ASP'/><category term='events'/><category term='postback'/><category term='aptana studio'/><category term='IDE'/><category term='TFS 2008'/><category term='Animated gifs'/><category term='Firefox'/><category term='buzzword bingo'/><category term='Chrome'/><category term='Microsoft Sharepoint'/><category term='TFS 2010'/><category term='html'/><category term='Eclipse'/><category term='Aaron Ball'/><category term='Safari'/><category term='Internet Explorer'/><category term='Server 2008'/><category term='ASP.Net'/><category term='JavaScript'/><category term='Blog Move'/><category term='eclipse-pde'/><category term='Connection string'/><category term='aptana'/><title type='text'>Musings of a Web Developer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-2832117572020679103</id><published>2010-05-27T10:55:00.001-07:00</published><updated>2010-05-27T10:55:46.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog Move'/><category scheme='http://www.blogger.com/atom/ns#' term='aaronwball.com'/><title type='text'>Blog Move</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Hello all,&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I recently purchased a domain for the purposes including combining all of my blogs into one website with single styling and more control over how everything works (wordpress plugins here we come!). Shameless plugs for myself aside, it's a pretty handy site. All that being said, all of my posts from my blogs here on blogspot (Musings of a Systems Admin, Musings of a Web Developer, and Musings of a Sub-par Linux User) have been moved to &lt;a href="http://www.aaronwball.com/"&gt;http://www.aaronwball.com&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The website is still being worked on, so the styles might change a bit between now and whenever I decide to stop writing css. Please leave your comments and suggestions.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Thanks for reading everyone!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-2832117572020679103?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/2832117572020679103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2010/05/blog-move.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/2832117572020679103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/2832117572020679103'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2010/05/blog-move.html' title='Blog Move'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-196016406087419671</id><published>2010-02-26T14:03:00.000-08:00</published><updated>2010-02-26T14:28:31.010-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='aptana'/><category scheme='http://www.blogger.com/atom/ns#' term='aptana studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse-pde'/><title type='text'>Installation of Aptana Studio into Eclipse</title><content type='html'>Hello all,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I recently attempted installing the Aptana (web dev functionality based off of Eclipse) studio after messing up my stand-alone version (which was outdated anyways). The installation process seemed relatively simple but upon install, I received an ambiguous error message saying:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 14px; font-family:sans-serif;font-size:12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 14px; font-family:sans-serif;font-size:12px;"&gt;An error occurred while installing the items&lt;br /&gt;session context was:(profile=&lt;wbr&gt;PlatformProfile&lt;wbr&gt;, phase=org.&lt;wbr&gt;eclipse.&lt;wbr&gt;equinox.&lt;wbr&gt;internal.&lt;wbr&gt;provisional.&lt;wbr&gt;p2.engine.&lt;wbr&gt;phases.&lt;wbr&gt;Install, operand=null --&gt; [R]org.&lt;wbr&gt;eclipse.&lt;wbr&gt;ant.ui 3.4.1.v20090901&lt;wbr&gt;_r351, action=&lt;wbr&gt;org.eclipse.&lt;wbr&gt;equinox.&lt;wbr&gt;internal.&lt;wbr&gt;p2.touchpoint.&lt;wbr&gt;eclipse.&lt;wbr&gt;actions.&lt;wbr&gt;InstallBundleAc&lt;wbr&gt;tion).&lt;br /&gt;The artifact file for osgi.bundle,&lt;wbr&gt;org.eclipse.&lt;wbr&gt;ant.ui,&lt;wbr&gt;3.4.1.v20090901&lt;wbr&gt;_r351 was not found.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="line-height: 14px; font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;After searching this for a bit, I stumbled upon a bug report for Eclipse that addressed this issue.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/eclipse/+bug/477944"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;https://bugs.launchpad.net/ubuntu/+source/eclipse/+bug/477944&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The simple solution, crack open a fresh new terminal window (or one you already have open of course) and type in &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sudo apt-get install eclipse-pde&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Attempt reinstalling the Aptana plugin and all should go smoothly now.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-196016406087419671?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/196016406087419671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2010/02/installation-of-aptana-studio-into.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/196016406087419671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/196016406087419671'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2010/02/installation-of-aptana-studio-into.html' title='Installation of Aptana Studio into Eclipse'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-633733997993585063</id><published>2009-12-14T08:37:00.001-08:00</published><updated>2009-12-14T08:45:02.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Connection string'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='connection'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Note to self: Connecting ASP.Net to SQL</title><content type='html'>&lt;b&gt;Note to self:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;When connecting your back-end code for ASP.Net to a SQL Server instance, always remember to include the SQL instance name in the connection string.&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;HOSTNAME\SQLEXPRESS (or another instance name)&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-633733997993585063?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/633733997993585063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2009/12/note-to-self-connecting-aspnet-to-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/633733997993585063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/633733997993585063'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2009/12/note-to-self-connecting-aspnet-to-sql.html' title='Note to self: Connecting ASP.Net to SQL'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-3595093702214557253</id><published>2009-11-06T22:35:00.000-08:00</published><updated>2009-11-10T08:42:09.926-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Animated gifs'/><category scheme='http://www.blogger.com/atom/ns#' term='Timex'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Safari'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='animation freezing'/><category scheme='http://www.blogger.com/atom/ns#' term='postback'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Postback Freezes Animated Gifs</title><content type='html'>Hello again all,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;rant&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;rant&gt;&lt;/rant&gt;&lt;/div&gt;&lt;div&gt;In all my experiences in my life as a geek, I have found few things more frustrating than developing something for any version of Internet Explorer (please hold your shouts of agreement for the end). Internet Explorer 5 never really existed (did the internet exist then even?), Internet Explorer 6 was a complete atrocity, Internet Explorer 7 I am pretty sure caused the suicide rate amongst us geeks to go up significantly, and Internet Explorer 8, while better than its predecessors, only caused a few geeks to become severely dependent on mind-altering drugs to help them cope with the frustrations of life (or maybe just web development for IE).&lt;/div&gt;&amp;lt;/rant&amp;gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may now cheer...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, down to business. On the topic of Internet Explorer doing things differently from the rest of the world simply for the sake of it (hey look, they're taking after Apple), I have recently experienced a very frustrating problem with animated gifs. Referring to my previous post about the file uploader, the client I was developing that for wanted an animation icon for the upload so their customers didn't think the page had frozen. Sounds like a simple task, no?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The problem can be described as this:&lt;/b&gt; When a postback event occurs  (ie: clicking a link or submit button), Internet Explorer freezes all animated gifs on the page.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;To explain how I fixed this,&lt;/b&gt; I essentially placed an animated 'rotating circle' on the page which was hidden until the onSubmit() function was called. Here's the code for the image while it was hidden.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: 'Andale Mono','Lucida Console',Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 667px;"&gt;&lt;code&gt;&amp;lt;img src="./images/loading.gif" id="loader" style="visibility:hidden;" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Annnd here's the code for the animation problem fix as well as the code that changes the image visibility.&lt;/div&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: 'Andale Mono','Lucida Console',Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 667px;"&gt;&lt;code&gt;function showLoader()&lt;br /&gt;&lt;div&gt;{&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;//*** Reload the image for IE ***&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;document.getElementById('loader').src='./images/loader.gif';&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;//*** Let's make the image visible ***&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;document.getElementById('loader').style.visibility = 'visible';&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;}&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Note that this is not needed for any browsers other than Internet Explorer (any that I know of at least). Firefox, Google Chrome, and Safari all ran the animated gif image during postback without freezing it.&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;To explain how the fix works, when a postback occurs in Internet Explorer, it stops all animations on the page, as mentioned. &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;The trick to fixing this is to reload the animated gifs when the postback occurs. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;In the example this occurs in t&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;he first line of the JavaScript function,  &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;(document.getElementById('loader').src='./images/loader.gif');.&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;  Right there we just re-set the source for the object to the source for the same object on postback.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;That's how it works. Any thoughts? Criticism? Motions to boycott Internet Explorer 7?&lt;/span&gt;&lt;/div&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-3595093702214557253?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/3595093702214557253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2009/11/html-postback-freezes-animated-gifs.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/3595093702214557253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/3595093702214557253'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2009/11/html-postback-freezes-animated-gifs.html' title='Postback Freezes Animated Gifs'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-4004495738119948790</id><published>2009-10-20T07:28:00.000-07:00</published><updated>2009-10-23T18:20:41.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='buzzword bingo'/><category scheme='http://www.blogger.com/atom/ns#' term='buzzwords'/><category scheme='http://www.blogger.com/atom/ns#' term='onclick'/><category scheme='http://www.blogger.com/atom/ns#' term='return'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Javascript : Controlling onclick Event Completion</title><content type='html'>&lt;div&gt;I recently ran into a small issue with a file uploader form I was coding. What I wanted to do was basically to stop the JavaScript onclick event from completing should a certain required action not be completed.&lt;div&gt;To paint out my scenario for you, I have coded an image uploader web application that I want to require the user to input a description of the image before they are allowed to select the image for upload. That being said, there are two different simple ways to do this. The first, disable the "Browse" button until the user has entered a description. The second, if the description is not entered, notify the user &lt;i&gt;onclick&lt;/i&gt; of the "Browse" button. For my situation, the latter was what I went for (I'll write another post on the first option if anyone is interested in it...let me know in the comments section).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's get some initial front-end code here...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: 'Andale Mono','Lucida Console',Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 667px;"&gt;&lt;code&gt;   &amp;lt;!-- Text box that can't be empty --&amp;gt;&lt;br /&gt;&amp;lt;input type="text" id="text" /&amp;gt;Some Text&lt;br /&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;lt;!-- The file box to be validated --&amp;gt;&lt;br /&gt;&amp;lt;input type="file" id="filebox" onclick="return validateText('text')"/&amp;gt;&lt;br /&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the simple "back-end" JavaScript function...&lt;/div&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: 'Andale Mono','Lucida Console',Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 667px;"&gt;&lt;code&gt;    &amp;lt;script&amp;gt;&lt;br /&gt;function validateText( ObjectName )&lt;br /&gt;{&lt;br /&gt; // If there is nothing in the textbox...&lt;br /&gt; if (document.getElementById(ObjectName).value == '')&lt;br /&gt; {&lt;br /&gt;   alert('Please enter a value for Some Text before trying to select a file.')&lt;br /&gt;   return false;&lt;br /&gt; }&lt;br /&gt; // If textbox contains text...&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;   alert('The text in Some Text is \"' + document.getElementById(ObjectName).value + '\". You may now select a file.');&lt;br /&gt;   return true;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Hopefully the HTML code is relatively self explanatory. &lt;/div&gt;&lt;div&gt;&lt;i&gt;Note that the file input has it's onclick attribute set to call the validateText function (passing in the id of the "Some Text" textbox as the parameter).&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The javascript code is where the fun happens. There I created a function with the name validateText, requiring one parameter. The basic breakdown of the order of operations for that function is&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Event triggered&lt;/li&gt;&lt;li&gt;Function called&lt;/li&gt;&lt;li&gt;Document element is retrieved by the parameter passed in (in the sample code this would be 'text')&lt;/li&gt;&lt;li&gt;Value is checked&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;if value is equal to ' ' (empty)&lt;/li&gt;&lt;li&gt;-&gt; Alert the user saying the value is empty&lt;/li&gt;&lt;li&gt;-&gt; Cancel onclick operation by not showing the file browser window)&lt;/li&gt;&lt;li&gt;else (value is not empty)&lt;/li&gt;&lt;li&gt;-&gt; Alert the user saying what the value is set to&lt;/li&gt;&lt;li&gt;-&gt; Continue onclick event by showing file browser window&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;What the previously shown code does is it "interrupts" the onclick event to perform a check of the value of the specified textbox. In this case, if the textbox is empty, the onclick event stops before the file explorer dialog displays.&lt;/div&gt;&lt;div&gt;What makes this work is in the return values. When the method is called in the html, return is specified before the function call&lt;/div&gt;&lt;/div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: 'Andale Mono','Lucida Console',Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 667px;"&gt;&lt;code&gt;&amp;lt;input type="file" id="filebox" onclick="return validateText('text')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Typically in JavaScript, a return is not specified with function calls unless you want to be able to control the event (typically for code stability such as catching exceptions and stopping the code before it does harm) during the event. &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Short and succinct, &lt;i&gt;&lt;b&gt;if your function returns true&lt;/b&gt;&lt;/i&gt;, the event (onclick, onsubmit, onchange, etc.) will continue as originally designed. &lt;i&gt;&lt;b&gt;If your function returns false&lt;/b&gt;&lt;/i&gt;, the event will be stopped before completion. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That being said, don't forget to add the return actions to your function as well, otherwise it won't work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That about sums it up for this post. I unfortunately have no funny remarks to make other than a few buzzwords to let loose...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This seamless deployment of this bit of code is mission critical. Also, don't forget our meeting later so we can touch base to discuss a synergistic team-oriented coding approach to our new workflow paradigms.&lt;/div&gt;&lt;div&gt;Anyone have five in a row yet?&lt;br /&gt;&lt;br /&gt;Timex&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-4004495738119948790?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/4004495738119948790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2009/10/javascript-controlling-onclick-event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/4004495738119948790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/4004495738119948790'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2009/10/javascript-controlling-onclick-event.html' title='Javascript : Controlling onclick Event Completion'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5114326810987056832.post-3733004969711081995</id><published>2009-10-19T22:47:00.000-07:00</published><updated>2009-10-19T23:44:10.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Timex'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Aaron Ball'/><category scheme='http://www.blogger.com/atom/ns#' term='new beginnings'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='hyper-v'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Let's get started... again</title><content type='html'>Hi everyone,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For those of you who don't know me, I'm the author of the &lt;a href="http://aaronwball.blogspot.com/"&gt;Musings of a Server Admin&lt;/a&gt; blog where I discussed many various areas relating to server security, troubleshooting, and the building and configuration of servers for Microsoft SharePoint, MSSQL, Microsoft Hyper-V, Windows Server 2008, Team Foundation Server 2010 and 2008, and various other server technologies out there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Judging from the title of this blog you have no doubt guessed that the aforementioned Microsoft ship has sailed and we're now boarding another exciting one for more adventures into the vast world of technology. It almost makes it sound like it'll be fun. Have no worries though, I will try to do my best to make these posts as painless but helpful as possible via the use of clever buzzwords (get out your buzzword bingo cards),  an xkcd.com comic here and there, and vivid imagery and screenshots to depict the dull and grey world of programming...alright, it's not THAT boring, or is that just me?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's to the hopefully painless, informational, and entertaining journey ahead.&lt;/div&gt;&lt;div&gt;Additionally, here's to Ric who aptly dubbed me Timex.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Aaron Ball (Timex)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5114326810987056832-3733004969711081995?l=timexwebdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://timexwebdev.blogspot.com/feeds/3733004969711081995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://timexwebdev.blogspot.com/2009/10/lets-get-started.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/3733004969711081995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5114326810987056832/posts/default/3733004969711081995'/><link rel='alternate' type='text/html' href='http://timexwebdev.blogspot.com/2009/10/lets-get-started.html' title='Let&apos;s get started... again'/><author><name>Aaron Ball</name><uri>http://www.blogger.com/profile/12849544050732857786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_fFoN8CkeDAI/Sm8n_BQO8mI/AAAAAAAAAHc/ZC6FNSIu5bQ/S220/5931_1179704967766_1082400007_549668_1874836_n2.jpg'/></author><thr:total>0</thr:total></entry></feed>
