<?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>Schreinert.com &#187; Javascript</title>
	<atom:link href="http://www.schreinert.com/tags/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.schreinert.com</link>
	<description>Software-Entwicklung • IT-Projektmanagement  • E-Commerce-Beratung</description>
	<lastBuildDate>Wed, 23 Sep 2009 14:24:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Javascript nachladen und ausf&#252;hren via DocumentRange</title>
		<link>http://www.schreinert.com/javascript-nachladen-und-ausfuehren-via-documentrange-67/</link>
		<comments>http://www.schreinert.com/javascript-nachladen-und-ausfuehren-via-documentrange-67/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 17:15:52 +0000</pubDate>
		<dc:creator>Stefan Schreinert</dc:creator>
				<category><![CDATA[Web-Applikationen]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[DocumentRange]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://www.schreinert.com/?p=67</guid>
		<description><![CDATA[F&#252;r ein Web-Projekt wollte ich dynamisch per Ajax Web-Seiten-Inhalte nachladen. Dabei stie&#223; ich wiedermal auf das Problem, dass ich die Seitenfragmente einfach in die bestehende Web-Seite nachladen m&#246;chte, aber der enthaltene Javascript-Code nicht ausgef&#252;hrt wurde. Dumm nur, dass das nachgeladene Seiten-Fragment zu 99% aus Javascript bestand. Die L&#246;sung f&#252;r dieses &#8220;schwerwiegende&#8221; Problem stellte sich letztendlich [...]]]></description>
			<content:encoded><![CDATA[<p>F&#252;r ein Web-Projekt wollte ich dynamisch per Ajax Web-Seiten-Inhalte nachladen. Dabei stie&#223; ich wiedermal auf das Problem, dass ich die Seitenfragmente einfach in die bestehende Web-Seite nachladen m&#246;chte, aber der enthaltene Javascript-Code nicht ausgef&#252;hrt wurde. Dumm nur, dass das nachgeladene Seiten-Fragment zu 99% aus Javascript bestand. Die L&#246;sung f&#252;r dieses &#8220;schwerwiegende&#8221; Problem stellte sich letztendlich nach stundenlanger Suche als sehr trivial heraus.<img src="http://www.schreinert.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p>Die Aufgabe besteht &#8212; wie schon geschrieben &#8212; darin, ein Seitenfragment dynamisch per Ajax nachzuladen und in den bestehenden Content einzuf&#252;gen. Dank Yahoo&#8217;s User Interface ( <a href="http://developer.yahoo.com/yui">YUI</a> ) klappte der Ajax-Aufruf zum Laden des Inhalts auch recht flott. Als Antwort kommt aber einen Text-String (responseText) zur&#252;ck, statt einem erhofften DOM-Node-Objekt.</p>
<p>Ansich l&#228;sst sich dieser reine Text einschlie&#223;lich HTML-Formatierungen einfach in ein bestehendes HTML-Element einbinden, etwa in ein DIV-Element mit der id=&#8221;content&#8221;:</p>
<blockquote><p><code>document.getElementById('content').innerHTML=responseText;</code></p></blockquote>
<p>Diese einfache Zeile &#252;berschreibt den Inhalt des DIV-Elements durch den erhaltenen String. Wie gesagt werden Format-Anweisungen wie &lt;strong&gt;, &lt;div&gt; und weitere korrekt angezeigt.</p>
<p>Anders aber sieht es mit Javascript aus. Die Javascript-Engine des Browsers reagiert offensichtlich nur auf ein Node-Objekt vom Typ &lt;script&gt;. Es hilft alles nichts, ohne ein vermeintlich aufw&#228;ndiges Parsen des HTML-Strings gibt es kein Javascript. Die L&#246;sung aber ist doch trivialer, als von mir gedacht.</p>
<p>Die Antwort lautet DocumentFragment. Dieser Typ wird im W3C DOM Standard beschrieben und wird von Firefox wie auch vom Internet Explorer unterst&#252;tzt. Nachfolgend ist ein Code-Beispiel aufgef&#252;hrt, welches die Zeichenkette mit dem HTML-Code in der Variable &#8220;text&#8221; enth&#228;lt. Weiterhin gilt, dass mein DIV-Element mit der id &#8220;content&#8221; als Container f&#252;r den nachgeladenen Code herhalten soll.</p>
<blockquote><p><code>var divElement = document.createElement('div');<br class="break" />divElement.innerHTML = text;<br class="break" />var docFrag = document.createDocumentFragment();<br class="break" />while (divElement.firstChild)<br class="break" /> docFrag.appendChild(divElement.firstChild);<br class="break" />document.getElementById("document").appendChild(docFrag);</code></p></blockquote>
<p>Dieses einfache Beispiel gen&#252;gt, um sein nachgeladenes Javascript lauff&#228;hig zu machen.</p>
<p>Noch ein Tipp: Dieses Beispiel f&#252;gt das Code-Fragment als letztes Kind von &#8220;content&#8221; ein. Alles was bereits im DIV-Element enthalten ist bleibt auch nachher sichtbar. Will man einen leeren Container verwenden, so l&#228;sst sich dieser wie folgt entr&#252;mpeln:</p>
<blockquote><p><code>while ( document.getElementById("content").firstChild )<br class="break" /> document.getElementById("content")<br class="break" /> .removeChild(contentNode.firstChild);</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.schreinert.com/javascript-nachladen-und-ausfuehren-via-documentrange-67/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby-On-Rails Tipp: Javascript in Web-Seiten einbetten</title>
		<link>http://www.schreinert.com/ruby-on-rails-tipp-javascript-in-web-seiten-einbetten-48/</link>
		<comments>http://www.schreinert.com/ruby-on-rails-tipp-javascript-in-web-seiten-einbetten-48/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 15:22:00 +0000</pubDate>
		<dc:creator>Stefan Schreinert</dc:creator>
				<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Ruby-on-Rails]]></category>

		<guid isPermaLink="false">http://www.schreinert.com/ruby-on-rails-tipp-javascript-in-web-seiten-einbetten-48/</guid>
		<description><![CDATA[F&#252;r ein Projekt auf Basis Ruby-On-Rails hatte ich die Aufgabe, in per Ajax nachgeladene Html-Seiten ein Javascript einzubinden. Ein einfaches einf&#252;gen des bekannten Html-Tags &#60;script type=&#8221;text/javascript&#8221;&#62; brachte keinen Erfolg, ebenso wenig wie die Ruby-Anweisung &#8220;javascript_tag&#8221;. Hier die L&#246;sung f&#252;r mein Problem, Javascript in ein Template einzubetten.
Wie erw&#228;hnt, wurde das betroffene Html-Template von einer anderen Seite [...]]]></description>
			<content:encoded><![CDATA[<p>F&#252;r ein Projekt auf Basis Ruby-On-Rails hatte ich die Aufgabe, in per Ajax nachgeladene Html-Seiten ein Javascript einzubinden. Ein einfaches einf&#252;gen des bekannten Html-Tags &lt;script type=&#8221;text/javascript&#8221;&gt; brachte keinen Erfolg, ebenso wenig wie die Ruby-Anweisung &#8220;javascript_tag&#8221;. Hier die L&#246;sung f&#252;r mein Problem, Javascript in ein Template einzubetten.<span id="more-48"></span></p>
<p>Wie erw&#228;hnt, wurde das betroffene Html-Template von einer anderen Seite nachgeladen. Das Nachladen machte der <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Updater">Ajax.Updater</a> aus dem prototype-Framework. Standard-m&#228;&#223;ig l&#246;scht diese Methode die Script-Anweisungen aus dem geladenen Code heraus &#8212; was mein Problem erkl&#228;rt. Die Option evalScripts:true bringt den &#8220;Updater&#8221; dazu, den geladenen Script-Code an den Client weiterzureichen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schreinert.com/ruby-on-rails-tipp-javascript-in-web-seiten-einbetten-48/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
