<?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; DHTML</title>
	<atom:link href="http://timwhitlock.info/blog/tag/dhtml/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 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>

