<?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>bb242.log &#187; Internet Explorer</title>
	<atom:link href="http://www.bb242.de/tag/internet-explorer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bb242.de</link>
	<description>Fahrtenbuch des Schreckens</description>
	<lastBuildDate>Fri, 02 Dec 2011 09:20:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Kann Internet Explorer mit setAttributeNode() kein Javascript-Event an DOM-Node binden?</title>
		<link>http://www.bb242.de/2007/09/14/kann-internet-explorer-mit-setattributenode-kein-javascript-event-an-dom-node-binden/</link>
		<comments>http://www.bb242.de/2007/09/14/kann-internet-explorer-mit-setattributenode-kein-javascript-event-an-dom-node-binden/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 09:50:54 +0000</pubDate>
		<dc:creator>leopold</dc:creator>
				<category><![CDATA[2. OG L Studiendekanat]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.bb242.de/2007/09/14/internet-explorer-kann-mit-setattributenode-kein-javascript-event-an-dom-node-binden/</guid>
		<description><![CDATA[Vorgestern trat ich mal wieder in eine Endlosschleife ein. Eigentlich wollte ich nur in einem XHTML-Dokument den Text innerhalb einer bestimmten Überschrift mit JavaScript zu einem Link umwandeln und diesen mit dem onclick-Attribut versehen. Quasi so: vorher: ... &#60;div&#62; &#60;h1 id="header1"&#62;Hallo&#60;/h1&#62; &#60;/div&#62; ... nachher: ... &#60;div&#62; &#60;h1 id="header1"&#62; &#60;a href="#" onclick="alert(this.tagName); return false"&#62;Hallo&#60;/a&#62; &#60;/h1&#62; &#60;/div&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Vorgestern trat ich mal wieder in eine Endlosschleife ein. Eigentlich wollte ich nur in einem <abbr title="eXtensible HyperText Markup Language">XHTML</abbr>-Dokument den Text innerhalb einer bestimmten Überschrift mit JavaScript zu einem Link umwandeln und diesen mit dem <code>onclick</code>-Attribut versehen. Quasi so:</p>
<p>vorher:</p>
<pre>...
&lt;div&gt;
    &lt;h1 id="header1"&gt;Hallo&lt;/h1&gt;
&lt;/div&gt;
...</pre>
<p>nachher:</p>
<pre>...
&lt;div&gt;
    &lt;h1 id="header1"&gt;
        &lt;a href="#" onclick="alert(this.tagName); return false"&gt;Hallo&lt;/a&gt;
    &lt;/h1&gt;
&lt;/div&gt;
...</pre>
<p>Dachte mir also, mit etwas <abbr title="Document Object Model">DOM</abbr>-Manipulation läßt sich der ganze Vorgang schön abwickeln und habe mir eine Funktion in dieser Art gebacken:</p>
<pre>
function tutNicht() {
    var heading = document.getElementById('header1');
    var headingText = document.createTextNode(heading.firstChild.nodeValue);

    var aElem = document.createElement('a');
    aElem.appendChild(headingText);

    var hrefAttrib = document.createAttribute("href");
    hrefAttrib.nodeValue = '#';

    var onclickAttrib = document.createAttribute("onclick");
    onclickAttrib.nodeValue = "alert(this.tagName); return false";

    aElem.setAttributeNode(onclickAttrib);
    aElem.setAttributeNode(hrefAttrib);

    heading.removeChild(heading.firstChild);
    heading.appendChild(aElem);
}</pre>
<p>Jetzt wird es interessant. Der Internet Explorer (Version 6+7) führt zwar die Manipulationen am DOM aus (wovon ich mich mittels des IE DomInspectors überzeugte), wenn man dann aber auf den Link klickt wird das OnClick-Event nicht ausgelöst.</p>
<p>Habe länger im Trüben gestochert bis mir die Idee kam, den Link mal unschön über die Eigenschaft <code>innerHTML</code> der Überschrift zu erzeugen. Nun funktioniert die Sache plötzlich auch im <abbr title="Internet Explorer">IE</abbr> und die Funktion <code>alert()</code> wir bei klicken aufgerufen:</p>
<pre>
function tut() {
    var heading = document.getElementById('header1');
    var text = heading.firstChild.nodeValue;
    heading.removeChild(heading.firstChild);

    heading.innerHTML = '&lt;a href="#" onclick="alert(this.tagName); return false;"&gt;' + text + '&lt;/a&gt;';
}</pre>
<p>Ein äußerst interessantes Phänomen welches es noch zu ergründen gilt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bb242.de/2007/09/14/kann-internet-explorer-mit-setattributenode-kein-javascript-event-an-dom-node-binden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

