<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>In My Experience: JavaScript</title>
    <link>http://inmyexperience.com/archives/cat_javascript.shtml</link>
    <description>A Blog About U and I</description>
    <dc:language>en-us</dc:language>
    <dc:creator>dan@inmyexperience.com</dc:creator>
    <dc:rights>Copyright 2005</dc:rights>
    <dc:date>2004-01-30T11:33:05-05:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.0b3" />
    <admin:errorReportsTo rdf:resource="mailto:dan@inmyexperience.com"/>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

    <item>
      <title>Detecting alphanumeric characters in JavaScript.</title>
      <link>http://inmyexperience.com/archives/000529.shtml</link>
      <description>It&apos;s 2004 already and just yesterday I wrote a JavaScript function to tell if a character passed into the function is an alpha-numeric character. One would think that after writing JavaScript for several years that...</description>
      <guid isPermaLink="false">529@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				<img src="/images/icon_pinned_up_note.gif" width="32" height="32" hspace="0" vspace="0" border="0" align="left">It's 2004 already and just yesterday I wrote a JavaScript function to tell if a character passed into the function is an alpha-numeric character. One would think that after writing JavaScript for several years that the need for this check would have come up already (and furthermore that there would be a built in method in the language, but that's not the case).
<p>
I approached the problem by using ASCII character codes. If you have BBEdit, there's a pallette that shows all of those code next to their characters, so I used that to write an annoyingly long if statement with four "or" statements and two "and" statements imbedded in an or statement. Annoying, but effective. Here it is...

<pre>
function alphaNumericCheck(theChar) {

	if ((theChar &lt; 48) || (theChar &gt; 122) || 
	   ((theChar &gt; 57) && (theChar &lt; 65)) || 
	   ((theChar &gt; 90) && (theChar &lt; 97))   ) {
		return false;
	} else {
		return true;
	}
}
</pre>

To call the function, you would say something like...
<pre>
&lt;input type="button" name="foo" value="my button"
    onclick="alphaNumericCheck(this.value.charCodeAt(0))"&gt;
</pre>
The part that says charCodeAt(0) will return the ASCII number for the character at the zeroth position in the string (the first character). The function will take that character and return "false" if it's <b>not</b> a number, a capital letter or a lowercase letter, and "true" if it is alphanumeric. Try it.

<p>

<script type="text/javascript" language="Javascript1.2">
<!--
function alphaNumericCheck(theChar) {

	if (   (theChar < 48) || (theChar > 122) || ((theChar > 57) && (theChar < 65)) || ((theChar > 90) && (theChar < 97))   ) {
		return false;
	} else {
		return true;
	}
}

//-->
</script>


<form action="none" name="alphaCheck" method="post">

<input type="text" name="someText" value="Type a char here and click &quot;Go&quot;" size="40" onfocus="this.value='';">

<input type="button" name="foo" value="Go"
    onclick="document.getElementById('charTestDiv').innerHTML = alphaNumericCheck(this.form.someText.value.charCodeAt(0));">

</form>
<div align="left" id="charTestDiv"></div>
<p>
      				<p>
      				<a href="http://inmyexperience.com/archives/000529.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2004-01-30T11:33:05-05:00</dc:date>
    </item>
    <item>
      <title>Getting form values for validation.</title>
      <link>http://inmyexperience.com/archives/000437.shtml</link>
      <description>Here&apos;s a quick little JavaScript that steps thru a form and reports the value of each element within that form, whatever the length of the form might be. This is a pretty easy little script...</description>
      <guid isPermaLink="false">437@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				Here's a quick little JavaScript that steps thru a form and reports the value of each element within that form, whatever the length of the form might be. This is a pretty easy little script to write, but I figured that since I had the need for it, someone else might too. The script looks like this...
<pre>
function reportFormElements(obj)  {

for (var i = 0; i < obj.length; i++) {

	if (obj.elements[i].type == 'checkbox') {
		alert(obj.elements[i].checked);
	}
	else {
	alert(obj.elements[i].value);
	}
	
  }

}
</pre>
The basic gist is, for each actual form element in the form, look at the value of the form element and alert that value. If it's a checkbox, then investigate the 'checked' attribute.
<p>
There are several ways to do this sort of thing, and one of them reports the value of each child node in the named form, including text nodes, html nodes. We don't want that, and only want to interrogate the actual form elements. A sample form is below, go ahead and try it...

<br>
<br>

<form action="foo" method="get">

<input type="text" name="a" id="a" value="1">
<br>
<input type="text" name="b" id="b" value="2">
<br>
<input type="text" name="c" id="c" value="3">
<br>
<input type="text" name="c" id="c" value="4">
<br>
<input type="checkbox" name="d" id="d" value="hi">checkbox
<br>
<input type="button" onclick="reportFormElements(this.form)" value="click">

</form>

<script type="text/javascript" language="Javascript1.2">
<!--

function reportFormElements(obj)  {

for (var i = 0; i < obj.length; i++) {

	if (obj.elements[i].type == 'checkbox') {
		alert(obj.elements[i].checked);
	}
	else {
	alert(obj.elements[i].value);
	}
	
  }

}


//-->
</script>
      				<p>
      				<a href="http://inmyexperience.com/archives/000437.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-09-04T10:39:05-05:00</dc:date>
    </item>
    <item>
      <title>Is the setAttribute() method broken in IE?</title>
      <link>http://inmyexperience.com/archives/000428.shtml</link>
      <description>In a recent bit of development work, we discovered the beauty and pain of the setAttribute() method. Specifically, we wanted to dynamically create more form elements for people to fill out without having to go...</description>
      <guid isPermaLink="false">428@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				In a recent bit of development work, we discovered the beauty and pain of the setAttribute() method. Specifically, we wanted to dynamically create more form elements for people to fill out without having to go back to the server and add in the HTML. So, we do a createlement() and then add in the various attributes that make up an input box. Here's the basics...
<pre>
  var input = document.createElement("INPUT");

  input.setAttribute("type","text");
  input.setAttribute("name","myinput");
  input.setAttribute("id","myinput");
</pre>
That makes a new input element, and then sets all of the attributes and their values. The result should be something like this...
<pre>
  &lt;input type="text" name="myinput" id="myinput"&gt;
</pre>
You can try that code right here...

<script type="text/javascript" language="Javascript1.2">

var i = 0;

function addInput(){

var myTableBody = document.getElementById("myTbody");
var myRow = document.createElement("TR");
var myCell = document.createElement("TD");

var input = document.createElement("INPUT");

input.setAttribute("type","text");
input.setAttribute("name","myinput" + i);
input.setAttribute("id","myinput" + i);

i++

myRow.appendChild(myCell);
myCell.appendChild(input);

myTableBody.appendChild(myRow);

alert(document.getElementById("myTable").parentNode.innerHTML);

}

</script>


<form name="sampleForm" action="none">

<table border="0" id="myTable">
<tbody id="myTbody">

<tr id="myRow">
<td>
<input type="text" name="sampleInput" id="sampleInput" value="sampleInput">
</td>
</tr>

</tbody>
</table>


<input type="button"  value="Add an Input" onclick="addInput();">


</form>
When you click on "Add an Input" some more complex JavaScript than quoted above will execute, and if you are using Navigator, Safari or Mozilla, you will get a new input with all if its necessary attributes defined and populated. The innerHTML will be alerted so you can verify that. Try it, and then view the page source to see what the code is doing.
<p>
Notice that I used the word "should" in the my comments above. I say the 's' word for a couple of reasons. Internet Explorer 6 on Win 2k Pro doesn't set any of the attributes. And Internet Explorer 5.2.3 for Mac OSX does something even worse, it throws a JavaScript error on the attempt to set the type attribute. Scouring the net for answers yielded frustrating results.
<p>
One particularly <a href="http://www.siteexperts.com/forums/viewConverse.asp?d_id=9396" id="expertmyassLink" title="Nice subject: anybody could give a workaround for this?">delicious find</a> mentions that the Microsoft Developer site provides code that doesn't execute. When I run the code at that link, I get an error at the attempt to set the type attribute. The MSDN even <a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/setattribute.asp" id="msdnsetattrLink" title="MSDN: setAttribute Method">talks about the method</a> as if it were fully supported, but I'm not so sure about that. <a href="http://msdn.microsoft.com/workshop/author/behaviors/reference/methods/setattribute_1.asp" id="workignexamLink" title="&quot;This method requires an object participating in persistence&quot;">The only working</a> example I could find seems to be completely IE/Windows specific and mentions that "his method requires an object participating in persistence".
<p>
My conclusion is that the setAttribute method is not fully supported in Internet Explorer. So, we resorted to workarounds, and found one. If you do a createElement("SPAN") and then pump it full of innerHTML and then append that to something, you will get your desired effect. But, that's at <a href="http://www.developer-x.com/content/innerhtml/" id="devxsetattrinnerhyLink" title="developer-x: innerHTML VS DOM">the price of using non-DOM code</a>.
<p>
If anyone else can shed any more light on this, please do. My knowledge on the subject is anecdotal and derived from experimentation. Other data includes <a href="http://www.oreilly.com/catalog/dhtmlref2/errata/dhtmlref2.unconfirmed" id="dhtemlrefattrrLink" title="The unconfirmed error reports are from readers.  They have not yet been 
approved or disproved by the author or editor and represent solely the
opinion of the reader.">weird comments like the following from O'Reilly</a>...
<blockquote>
"The book says that the setAttribute() method in IE4 through 5.5 uses propertynames
instead of attributenames. I experienced that the same behaviour holds for IE6.0 for
PC."
</blockquote>
Again, please let me know if you know anything that hasn't been mentioned here already.
      				<p>
      				<a href="http://inmyexperience.com/archives/000428.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-08-05T16:50:30-05:00</dc:date>
    </item>
    <item>
      <title>cells[] array broken in Safari (?)</title>
      <link>http://inmyexperience.com/archives/000412.shtml</link>
      <description> Safari reports the length of the cells[] array of a table row as zero, even if it has multiple cells. Look at the table below, if you mouse over it in a Gecko browser,...</description>
      <guid isPermaLink="false">412@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				<script type="text/javascript">
<!--
function color(obj) {
	for (var i=0; i < obj.cells.length; i++) {
		obj.cells[i].style.backgroundColor = '#FFFFCC';
	}
}
function uncolor(obj) {
	for (i=0; i<obj.cells.length;i++) {
		obj.cells[i].style.backgroundColor = '#CCCCCC';
	}
}
//-->
</script>
Safari reports the length of the cells[] array of a table row as zero, even if it has multiple cells. Look at the table below, if you mouse over it in a Gecko browser, or IE, you will see the background color of the table cells turn color. We do this by placing an onmouseover in the TR tags...
<pre>
&lt;tr onmouseover="color(this)"&gt;
</pre>
And that "color" function takes over and says...
<pre>
function color(obj) {

	for (var i=0; i < obj.cells.length; i++) {

		obj.cells[i].style.backgroundColor = '#FFFFCC';
	}
}
</pre>
So, onmouseover, the TR object gets passed and the function runs a loop using the length of the TR cells[] array as a stop point. In each iteration of the loop, it sets the backgroundColor to a light yellow and then we use an onmouseout to clean up after it, using almost the same exact function, only with a different name and different color (in this case, light grey, or #CCCCCC).

<br><br>

<table border="0" width="400" cellpadding="1" cellspacing="2">
	<tr onmouseover="color(this)" onmouseout="uncolor(this)" bgcolor="#CCCCCC">
		<td>_Row_1_Cell_1_</td>
		<td>_Row_1_Cell_2_</td>
		<td>_Row_1_Cell_3_</td>
		<td>_Row_1_Cell_4_</td>
		<td>_Row_1_Cell_5_</td>
		<td>_Row_1_Cell_6_</td>
	</tr>
	<tr onmouseover="color(this)" onmouseout="uncolor(this)" bgcolor="#CCCCCC">
		<td>_Row_2_Cell_1_</td>
		<td>_Row_2_Cell_2_</td>
		<td>_Row_2_Cell_3_</td>
		<td>_Row_2_Cell_4_</td>
		<td>_Row_2_Cell_5_</td>
		<td>_Row_2_Cell_6_</td>
	</tr>
	<tr onmouseover="color(this)" onmouseout="uncolor(this)" bgcolor="#CCCCCC">
		<td>_Row_3_Cell_1_</td>
		<td>_Row_3_Cell_2_</td>
		<td>_Row_3_Cell_3_</td>
		<td>_Row_3_Cell_4_</td>
		<td>_Row_3_Cell_5_</td>
		<td>_Row_3_Cell_6_</td>
	</tr>
	<tr onmouseover="color(this)" onmouseout="uncolor(this)" bgcolor="#CCCCCC">
		<td>_Row_4_Cell_1_</td>
		<td>_Row_4_Cell_2_</td>
		<td>_Row_4_Cell_3_</td>
		<td>_Row_4_Cell_4_</td>
		<td>_Row_4_Cell_5_</td>
		<td>_Row_4_Cell_6_</td>
	</tr>
</table>
<br>
<a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html#ID-6986576" id="trdefindom1Link" title="Interface HTMLTableRowElement">It's a part of DOM1</a> and supported back from Nav4 and IE4, so I'm guessing this is an oversight(?) Which isn't to surprising, because this isn't one of those make or break implementations, but it is REALLY useful for helping users track across an HTML table of financial data.
<p>
<small>[I don't mean to pick on Safari this week, I just happen to be dealing with it a lot and am finding some issues. I'm trying to help out by writing test cases and send them to <a href="http://www.apple.com/" id="applemommaLink" title="Apple">the mother ship</a>.]</small>
<p>
[Update: Safari 1.1 doesn't fix the cells[] array.]<br>
[Update: Safari 1.2 (which is Panther only) fixes the cells[] array.]
      				<p>
      				<a href="http://inmyexperience.com/archives/000412.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-06-26T14:08:50-05:00</dc:date>
    </item>
    <item>
      <title>Lesson Learned.</title>
      <link>http://inmyexperience.com/archives/000411.shtml</link>
      <description>At work we have an internal-only web application that helps us (and by us, I mean the 120 person organization I work within, not the entire corporate entity) manage are our assets, hosts, and other...</description>
      <guid isPermaLink="false">411@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				At work we have an internal-only web application that helps us (and by us, I mean the 120 person organization I work within, not the entire corporate entity) manage are our assets, hosts, and other operations oriented information. It's our lynch pin web app actually, and now, due to the one point oh release, it is my task to make sure it's compatible with Safari.
<p>
This is how yesterday's discussion about the getYear() method started. We are using that call in one script to deal with population of date fields (everything is tracked, and everything gets a time stamp). This effort is a classic example of why JavaScript, new browsers, and NOT following standards can cause extra work down the line.
<p>
Our server logs tell us that about 20 percent (I don't remember the exact amount, but it's much larger than "non trivial") of our users are Safari users, so this compatibility effort is essential. The saving grace is that the date functions we/I have written, are all in one place and sufficiently abstracted, and that helps me do less work. I had to add two lines of code to fix stuff. The hard part was doing the forensic work via alert() calls.
<p>
If I was smarter (and didn't use deprecated date methods), I wouldn't have had to make any edits, and Safari would have been auto-supported. Lesson learned.
<p>
Many thanks to those who posted yesterday.
      				<p>
      				<a href="http://inmyexperience.com/archives/000411.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-06-26T09:15:08-05:00</dc:date>
    </item>
    <item>
      <title>getYear() in Safari == getYear() in Navigator 4.x</title>
      <link>http://inmyexperience.com/archives/000410.shtml</link>
      <description>Ok, so this is weird, and I don&apos;t know why it was done this way (maybe Dave can explain), but Safari 1.0 returns the same value for the getYear() method that Netscape 4.x does, 103....</description>
      <guid isPermaLink="false">410@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				Ok, so this is weird, and I don't know why it was done this way (<a href="http://weblogs.mozillazine.org/hyatt/" id="davegimmeananswerLink" title="Dave is an Apple employee and a Safari coder.">maybe Dave can explain</a>), but Safari 1.0 returns the same value for the getYear() method that Netscape 4.x does, 103. Check this script out and then go ahead and click the button to see what it returns...
<pre>
&lt;script type="text/javascript" language="Javascript1.2"&gt;

function showYear() {
	var nowX    = new Date();
	var theYear = nowX.getYear();
	alert(theYear);
}

&lt;/script&gt;
</pre>

<script type="text/javascript" language="Javascript1.2">

function showYear() {
	var nowX    = new Date();
	var theYear = nowX.getYear();
	alert(theYear);
}

</script>
<form style="margin: 0px; padding: 0px;" action="null" name="wtf">Try it: <input type="button" onclick="showYear()" name="showyear" value="Show Year"></form>
<br>
So, you should have seen a modal dialog box with "103" in it (assuming you have your system clock set correctly), which is the current year, minus 1900 . That's how Navigator did the getYear() method. Why does Safari do that? There must be some (good? bad?) reason, and whatever it is, we still have to deal with it, and this is one way to go about it. First, we can do some browser detection for Safari like we do for Navigator 4.x...
<pre>
var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0
                && parseFloat(navigator.appVersion) >= 4
                && parseFloat(navigator.appVersion) < 5) ? 1 : 0;
</pre>
And we can do something similar for Safari by saying...
<pre>
var isSafari = (navigator.userAgent.indexOf("Safari") >= 0) ? 1 : 0;
</pre>
This basically says that the var "isSafari" is equal to "1" if the string "safari" occurs in the navigator.userAgent object. If it doesn't, then the value is 0, and later on we can use that value to say...
<pre>
if (isMinNS4 || isSafari) { theYear += 1900; }
</pre>
Which says that if it's Nav 4 or Safari then make "theYear" equal to itself plus 1900. And even us forensic JavaScripters should be able to figure out that 1900 + 103 = 2003. So, to get Safari to tell you what year it is, we can use this function...
<pre>
&lt;script type="text/javascript" language="Javascript1.2"&gt;

function showYear() {

	var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0
	                && parseFloat(navigator.appVersion) >= 4
	                && parseFloat(navigator.appVersion) < 5) ? 1 : 0;
					
	var isSafari = (navigator.userAgent.indexOf("Safari") >= 0) ? 1 : 0;

	var nowX    = new Date();
	var theYear = nowX.getYear();

	if (isMinNS4 || isSafari) { theYear += 1900; }

	alert(theYear);
}

&lt;/script&gt;
</pre>
<script type="text/javascript" language="Javascript1.2">

function showYear2() {

	var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0
                    && parseFloat(navigator.appVersion) >= 4
                    && parseFloat(navigator.appVersion) < 5) ? 1 : 0;
					
	var isSafari = (navigator.userAgent.indexOf("Safari") >= 0) ? 1 : 0;

	var nowX    = new Date();
	var theYear = nowX.getYear();
	
	if (isMinNS4 || isSafari) { theYear += 1900; }

	alert(theYear);
}

</script>
<form style="margin: 0px; padding: 0px;" action="null" name="wtf">Try it: <input type="button" onclick="showYear2()" name="showyear" value="Show Year"></form>
      				<p>
      				<a href="http://inmyexperience.com/archives/000410.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-06-25T11:55:33-05:00</dc:date>
    </item>
    <item>
      <title>A JavaScript Safari.</title>
      <link>http://inmyexperience.com/archives/000337.shtml</link>
      <description>Apple has posted an article about JavaScript support in Macintosh based browsers, and Safari supposedly scores well (but doesn&apos;t win). In my experience, the JavaScript engine is totally screwed up when it comes to dealing...</description>
      <guid isPermaLink="false">337@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				Apple has posted <a href="http://developer.apple.com/internet/javascript/jstests.html" id="javascriptinmacLink" title="Apple: JavaScript in Mac Browsers">an article about JavaScript support in Macintosh based browsers</a>, and Safari supposedly scores well (but doesn't win). In my experience, the JavaScript engine is totally screwed up when it comes to dealing with forms, especially when doing client side validation onSubmit. In an internal web app I work with, we have a checkbox that gets its state checked to do an eval on another form element. No matter which state it's in, it gets tripped off for some reason.
<p>
I can't even begin to support Safari until the JavaScript engine is fixed, and hopefully the final production version of Safari will be pretty solid, but even then, I know I'll be tweaking our scripts. Just call me <a href="http://www.pantheon.org/articles/s/sisyphus.html" id="carvelscookiepusLink" title="Sisyphus is the son of Aeolus (the king of Thessaly) and Enarete, and founder of Corinth.">Sisyphus</a>.
      				<p>
      				<a href="http://inmyexperience.com/archives/000337.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-02-23T19:13:01-05:00</dc:date>
    </item>
    <item>
      <title>Setting a maxlength on a textarea.</title>
      <link>http://inmyexperience.com/archives/000327.shtml</link>
      <description><![CDATA[On a mailing list last week someone asked about placing a maxlength on a &lt;textarea&gt; which most HTML munkies will know is not a legal (or supported) attribute of that tag. Someone chimed in making...]]></description>
      <guid isPermaLink="false">327@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				On a mailing list last week someone asked about placing a maxlength on a &lt;textarea&gt; which most HTML munkies will know is not a legal (or supported) attribute of that tag. Someone chimed in making that point and suggested that the person get familiar with the HTML 4.01 DTD. That advice is in the vein of 'if you teach a man to fish, you feed him for a lifetime.' I'm going to take the other tack and give the man a fish.
      				<p>
      				<a href="http://inmyexperience.com/archives/000327.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-02-15T10:36:39-05:00</dc:date>
    </item>
    <item>
      <title>Fab.</title>
      <link>http://inmyexperience.com/archives/000320.shtml</link>
      <description>konfabulator is one of those little things that I really got to play with, right now. One really impressive thing about it is the website, which lends a lot of credibility to the app, and...</description>
      <guid isPermaLink="false">320@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				<a href="http://www.konfabulator.com" id="mewantplaynowLink" title="www.konfabulator.com">konfabulator</a> is one of those little things that I really got to play with, right now. One really impressive thing about it is the website, which lends a lot of credibility to the app, and I haven't even downloaded it yet. Very professionally designed and well rounded websites are a nice change from the unwieldy web app I'm working on these days (ever changing = never perfect). However, the Konfabulator site is butt ass slow and all of the urls are different for pages, examples and downloads, etc.
<p>
I'm not sure why, but different domain names on different pages of a site makes me trust that site <b>less</b>. Why do you need one page of the site to live at an entirely different domain? I understand putting a file to download at a diff site (such as Akamai) for caching or download speed, but other normal pages of the site should be within the same domain. I don't know why, but it bugs me.
<p>
Who cares though, it all runs on JavaScript, and I know JavaScript, so I'll be tinkering with this soon.
      				<p>
      				<a href="http://inmyexperience.com/archives/000320.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2003-02-10T21:29:53-05:00</dc:date>
    </item>
    <item>
      <title>You need a crutch when your leg is broken.</title>
      <link>http://inmyexperience.com/archives/000130.shtml</link>
      <description>ScottAndrew wonders what he really feels about JavaScript crutch libraries. I don&apos;t. I like them, welcome them and hope people learn from them. Personally, I find myself in a fire drill environment where a solution...</description>
      <guid isPermaLink="false">130@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				<a href="http://www.scottandrew.com/weblog/000383" id="sacrutchLink" title="scottandrew: June 14, 2002">ScottAndrew wonders what he really feels about JavaScript crutch libraries</a>. I don't. I like them, welcome them and hope people learn from them. Personally, I find myself in a fire drill environment where a solution to a problem has to come as quickly as possible (sound familiar?). I keep a directory of old JavaScripts on my machine as reusable code libraries, but of course, as time goes by, they go stale, and Murphy's Law says I'll need the most stale script on a moments' notice. If I can get that working with minimal effort and deliver reliabel, functioning code, then I've put out the fire. When I have time, I go back to make the code clean, elegant and proper. I'll call this being resourceful.
<p>
Scott's point is not lost on me though, and I agree that correct, modern, validated, tolerant and gracefully degrading code is a best practice. Sometimes you just have to fill in the cracks and repave later (time and budget permitting).
      				<p>
      				<a href="http://inmyexperience.com/archives/000130.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2002-06-18T09:52:25-05:00</dc:date>
    </item>
    <item>
      <title>Another diff in browser implementations.</title>
      <link>http://inmyexperience.com/archives/000104.shtml</link>
      <description>If you do a comparison of &quot;08&quot; (zero and any integer, eight is our example here) with &quot;8&quot; in javascript, you will find that Internet Explorer will say they are the same, and that Mozilla...</description>
      <guid isPermaLink="false">104@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				If you do a comparison of "08" (zero and any integer, eight is our example here) with "8" in javascript, you will find that Internet Explorer will say they are the same, and that Mozilla will say they are different. So you have to do a parseInt() on a variable containing "08" to get a comparison to a variable containing "8" to return 'true'.
      				<p>
      				<a href="http://inmyexperience.com/archives/000104.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2002-05-13T22:28:26-05:00</dc:date>
    </item>
    <item>
      <title>JavaScripting is an anecdotal art.</title>
      <link>http://inmyexperience.com/archives/000031.shtml</link>
      <description>I&apos;ve been working with JavaScript for several years and was pleasantly surprised to find the new edition (4th) of the O&apos;Reilly JavaScript book on the shelf at Borders. As expected, the book is pretty well...</description>
      <guid isPermaLink="false">31@http://inmyexperience.com/</guid>
      <content:encoded>
      		<![CDATA[
      				I've been working with JavaScript for several years and was pleasantly surprised to find <a href="http://www.oreilly.com/catalog/jscript4/" title="oreilly.com -- Online Catalog: JavaScript: The Definitive Guide, 4th Edition" target="_blank">the new edition (4th) of the O'Reilly JavaScript book</a> on the shelf at Borders. As expected, the book is pretty well organized, and lets you know what calls can be made in what browsers. But, as always, the art of JavaScritpting in the real world is not so predictable.
<p>
One resource I have used in the past is the <a href="http://www.faqts.com/knowledge_base/index.phtml/fid/53/" title="FAQTs - Knowledge Base - FAQTS : Computers : Programming : Languages : JavaScript" target="_blank">FAQTs JavaScript Knoweledge Base</a>. The thing I like about the site is that it's a question and answer architecture. Sometimes I will find a question similar to my own, and look at the examples that answer my question. This sort of resource allows the application/functionality prototyper (that's me) to get something working in a minimum of time.
      				<p>
      				<a href="http://inmyexperience.com/archives/000031.shtml"><img src="http://inmyexperience.com/images/comment_button.gif" width="163" height="23" hspace="0" vspace="0" border="0" align="left"></a>
      		]]>
      </content:encoded>
      <dc:subject>JavaScript</dc:subject>
      <dc:date>2001-12-26T17:50:03-05:00</dc:date>
    </item>


  </channel>
</rss>