<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>timwhitlock.info &#187; Microsoft Internet Explorer</title>
	<atom:link href="http://timwhitlock.info/blog/tag/microsoft-internet-explorer/feed/" rel="self" type="application/rss+xml" />
	<link>http://timwhitlock.info</link>
	<description>Tim Whitlock&#039;s personal site and blog</description>
	<lastBuildDate>Thu, 15 Dec 2011 13:51:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>IE native functions &quot;bug&quot;?</title>
		<link>http://timwhitlock.info/blog/2008/12/28/ie-native-functions-bug/</link>
		<comments>http://timwhitlock.info/blog/2008/12/28/ie-native-functions-bug/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 16:00:11 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2008/12/28/ie-native-functions-bug/</guid>
		<description><![CDATA[In my article about method closures I showed a way to neatly create a portable reference to an object method that doesn&#8217;t  &#8216;forget&#8217; the object it belongs to. I have since discovered an aggravating problem on &#8211; you&#8217;ll never guess &#8211; Internet Explorer! It only affects native objects, e.g. window.alert. Before testing any complex code [...]]]></description>
			<content:encoded><![CDATA[<p>In my article about <a href="http://web.2point1.com/2008/11/24/javascript-closures/">method closures</a> I showed a way to neatly create a portable reference to an object method that doesn&#8217;t  &#8216;forget&#8217; the object it belongs to. I have since discovered an aggravating problem on &#8211; <em>you&#8217;ll never guess</em> &#8211; Internet Explorer!</p>
<p><span id="more-80"></span>It only affects native objects, e.g. window.alert. Before testing any complex code you can see that there is a problem by simply doing the following:</p>
<pre class="code">alert( typeof window.alert );</pre>
<p>You would expect this to alert &#8220;function&#8221;, but it does not. It alerts &#8220;object&#8221;, which explains the result of the next test.</p>
<pre class="code">alert( window.alert.call );</pre>
<p>You would expect this to alert &#8220;function&#8221; too, but it is actually <code>undefined</code>. The alert method of the window object is apparently not a <code>Function</code> object, which explains a lot of the IE-specific problems you encounter when you mess about with native objects.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2008/12/28/ie-native-functions-bug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE innerHTML bug</title>
		<link>http://timwhitlock.info/blog/2008/11/12/ie-innerhtml-bug/</link>
		<comments>http://timwhitlock.info/blog/2008/11/12/ie-innerhtml-bug/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 19:26:57 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[DHTML]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JScript]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>
		<category><![CDATA[MSIE]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2008/11/12/ie-innerhtml-bug/</guid>
		<description><![CDATA[Explorer throws an unknown error when you set innerHTML The bug seems to only occur for certain markup. I&#8217;m not 100% sure what the defining problem is, except that markup containing block elements like &#60;div&#62; and &#60;p&#62; seem to invoke the error. Anyway, this drove me up the wall recently so I thought I&#8217;d share [...]]]></description>
			<content:encoded><![CDATA[<h3>Explorer throws an <em>unknown </em>error when you set innerHTML</h3>
<p>The bug seems to only occur for certain markup. I&#8217;m not 100% sure what the defining problem is, except that markup containing block elements like <code>&lt;div&gt;</code> and <code>&lt;p&gt;</code> seem to invoke the error. Anyway, this drove me up the wall recently so I thought I&#8217;d share the work around I came up with.</p>
<p><span id="more-74"></span>In short, the technique is to use a temporary element to set <code>innerHTML</code> first. IE doesn&#8217;t complain about this, possibly because the element is not a part of the tree. Then append the child nodes of the temporary element to the target element and all is good with the world.</p>
<ol class="code javascript">
<li class="even"><span class="J_COMMENT">/**</span></li>
<li class="odd"><span class="J_COMMENT"> * IE-safe innerHTML setter</span></li>
<li class="even"><span class="J_COMMENT"> */</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_KEYWORD">function</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">setElementHTMLById</span><span class="J_PUNCTUATOR">(</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">id</span><span class="J_PUNCTUATOR">,</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">html</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">   </span><span class="J_KEYWORD">try</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">      </span><span class="J_KEYWORD">var</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">El</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">document</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">getElementById</span><span class="J_PUNCTUATOR">(</span><span class="J_IDENTIFIER">id</span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">      </span><span class="J_KEYWORD">if</span><span class="J_PUNCTUATOR">(</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">El</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">attachEvent</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">         </span><span class="J_KEYWORD">var</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">elTmp</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">document</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">createElement</span><span class="J_PUNCTUATOR">(</span><span class="J_STRING_LITERAL">&#8216;div&#8217;</span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">         </span><span class="J_IDENTIFIER">elTmp</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">innerHTML</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">html</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">         </span><span class="J_IDENTIFIER">El</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">innerHTML</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> </span><span class="J_STRING_LITERAL">&#8221;</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">         </span><span class="J_KEYWORD">for</span><span class="J_PUNCTUATOR">(</span><span class="J_WHITESPACE"> </span><span class="J_KEYWORD">var</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">i</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> 0</span><span class="J_PUNCTUATOR">;</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">i</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">&lt;</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">elTmp</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">childNodes</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">length</span><span class="J_PUNCTUATOR">;</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">i</span><span class="J_PUNCTUATOR">++</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">            </span><span class="J_IDENTIFIER">El</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">appendChild</span><span class="J_PUNCTUATOR">(</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">elTmp</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">childNodes</span><span class="J_PUNCTUATOR">[</span><span class="J_IDENTIFIER">i</span><span class="J_PUNCTUATOR">]</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">         </span><span class="J_PUNCTUATOR">}</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">      </span><span class="J_PUNCTUATOR">}</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">      </span><span class="J_KEYWORD">else</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">         </span><span class="J_IDENTIFIER">El</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">innerHTML</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">=</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">html</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">      </span><span class="J_PUNCTUATOR">}</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">   </span><span class="J_PUNCTUATOR">}</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">   </span><span class="J_KEYWORD">catch</span><span class="J_PUNCTUATOR">(</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">Er</span><span class="J_WHITESPACE"> </span><span class="J_PUNCTUATOR">)</span><span class="J_PUNCTUATOR">{</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">      </span><span class="J_KEYWORD">return</span><span class="J_WHITESPACE"> </span><span class="J_LITERAL">false</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_WHITESPACE">   </span><span class="J_PUNCTUATOR">}</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="odd"><span class="J_WHITESPACE">   </span><span class="J_KEYWORD">return</span><span class="J_WHITESPACE"> </span><span class="J_IDENTIFIER">El</span><span class="J_PUNCTUATOR">.</span><span class="J_IDENTIFIER">innerHTML</span><span class="J_PUNCTUATOR">;</span><span class="J_LINE_TERMINATOR"> </span></li>
<li class="even"><span class="J_PUNCTUATOR">}</span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2008/11/12/ie-innerhtml-bug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

