<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Slideshow Bob - Kommentare</title>
    <link>http://people.avona.com/~thomas.werner/</link>
    <description>Slideshow Bob - So viele bunte Zeichen. Überall.</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <pubDate>Wed, 08 Sep 2010 19:44:54 GMT</pubDate>

    <image>
        <url>http://people.avona.com/~thomas.werner/templates/slideshowbob/img/s9y_banner_small.png</url>
        <title>RSS: Slideshow Bob - Kommentare - Slideshow Bob - So viele bunte Zeichen. Überall.</title>
        <link>http://people.avona.com/~thomas.werner/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>derschreckliche: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c68</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (derschreckliche)</author>
    <content:encoded>
    Hi Thomas,&lt;br /&gt;
&lt;br /&gt;
hat diesmal etwas länger gedauert, aber ich habe was interessantes dazu gefunden und denke du könntest das auch sehr interessant finden. &lt;br /&gt;
&lt;br /&gt;
Aber erstmal zu deinen Ausführungen:&lt;br /&gt;
Du hast vollkommen recht, dass die zugeordneten Ausdrücke natürlich von der Semantik her gleichwertig sein müssen, aber da ich ja versuche eine kontextfreie Sprache zu erzeugen muss ich erstmal sicherstellen, dass der entstehende Ausdruck wohlgeformt ist - also erstmal syntaktisch korrekt aufgebaut ist.&lt;br /&gt;
Das Problem ergibt sich, da man nicht eine &quot;einfache&quot; Sprache wie z.B. 3-Adress-Code verwendet, bei der es keine grammatikalischen Einschränkungen gibt, außer, dass es eine Sequenz von den zulässigen Befehlen ist.&lt;br /&gt;
&lt;br /&gt;
Da wir aber in diesem Fall eine von einer kontextfreien Grammatik generierte Sprache als Zielsprache haben, unterliegt deren Syntax ja zwangsläufig der Grammatik und das will auch erst sichergestellt werden.&lt;br /&gt;
Zur Vedeutlichung: Angenommen wir habe für jede Regel eine &quot;Entsprechung&quot; in der Zielgrammatik gefunden. Dann ist noch lange nicht sichergestellt, dass die zugeordneten Regeln anwendbar sind. (Rein theoretisch könnte ich bspw. die Startregeln der Zielgrammatik einfach nicht zuordnen, wenn ich semantisch das Gleiche mit anderen Symbolen dartellen kann - somit keine korrekte Ableitung...)&lt;br /&gt;
&lt;br /&gt;
Dass die Abbildung Unidirektional wäre ist an sich kein Problem, schließlich können sich die Sprachen ja in der Ausdrucksmächtigkeit ja unterscheiden, dann ist natürlich eine vollständige Abbildung nur in die mächtigere Sprache möglich.&lt;br /&gt;
Ich nehme an genau das hast du mit &quot;...die Ausgangssprache sollte zumindest (von den Features her) eine Untermenge der Zielsprache sein...&quot; gemeint.&lt;br /&gt;
&lt;br /&gt;
Was die Literale/Keywords angeht geb ich dir selbstverständlich auch recht, die sind ja sprachspezifisch =&gt; bei der Generierung können ja die jeweils benötigten erzeugt werden.&lt;br /&gt;
Um die ging es mir aber gar nicht, bei der Wohlgeformtheit/syntaktischen Korrektheit. Um bei deinem Beispiel zu bleiben - ist glauch auch leichter nachzuvollziehen: Angenommen die Quellsprache(welche auch immer das ist) erlaubt IF_STMNT auch an Stellen, an denen es die Zielsprache( von mir aus Ruby) nicht erlaubt. Ich hätte dann zwar für jede Regel die eine Entsprechung, könnte den Ausdruck also übersetzen, dieser wäre aber nicht konform zur Zielgrammatik.&lt;br /&gt;
(Obwohl ich da grade Zweifel bekomme, ob die das IF_STMNT erzeugenden Regeln dann semantisch das gleiche bedeuten... hmmm??? werde es mir überlegen und einen weiteren Komment schreiben, sobalb ich was handfestes habe).&lt;br /&gt;
&lt;br /&gt;
Kommen wir aber nun zu dem Paper, dass ich gefunden habe, das sich mit der Vollständigkeit von ähnlichen Transformationen beschäftigt:&lt;br /&gt;
&quot;Completeness of Compositional Translation for Context-Free Grammars&quot; &lt;br /&gt;
von Willem-Olaf Huijsen&lt;br /&gt;
http://arxiv.org/abs/cmp-lg/9607035&lt;br /&gt;
&lt;br /&gt;
Er nutzt ein anderes (ursprüngl. linguistisches) Modell, wendet es dann aber auf die kontext-freien Grammatiken an und untersucht Bedingungen, unter denen eine vollständige Übersetzung nachweisbar möglich ist. &lt;br /&gt;
Hat mir sehr gefallen, deswegen wollte ich es dir nicht vorenthalten.&lt;br /&gt;
&lt;br /&gt;
Einige deiner Ideen sind auch drin, so z.B. nur bestimmte Transformationen erlaubt und die (gemeinsame) Semantik bildet die Grundlage für die Übersetzung.&lt;br /&gt;
&lt;br /&gt;
Einen riesen Dank dir nochmal für diese interessante und spannende Diskussion. Das ist ungemein hilfreich für ein tiefes Verständnis dieser, gerade am Anfang doch recht schwer verdaulichen Materie.&lt;br /&gt;
&lt;br /&gt;
Greeeeeeeeeeeeeeetz&lt;br /&gt;
&lt;br /&gt;
derschreckliche 
    </content:encoded>

    <pubDate>Tue, 20 Oct 2009 04:40:41 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c68</guid>
    
</item>
<item>
    <title>Ralle: Scribblenauts - die Feder ist so mächtig wie eine Atombombe</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/65-Scribblenauts-die-Feder-ist-so-maechtig-wie-eine-Atombombe.html#c66</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/65-Scribblenauts-die-Feder-ist-so-maechtig-wie-eine-Atombombe.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=65</wfw:comment>

    

    <author>nospam@example.com (Ralle)</author>
    <content:encoded>
    Geil... bring das beim nächsten Kinobesuch mit.&lt;br /&gt;
Aber lass uns da was langweiliges gucken &lt;img src=&quot;http://people.avona.com/~thomas.werner/templates/slideshowbob/img/emoticons/smile.gif&quot; alt=&quot;:)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Tue, 13 Oct 2009 09:49:46 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/65-guid.html#c66</guid>
    
</item>
<item>
    <title>Thomas Werner: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c65</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Hi Iwan,&lt;br /&gt;
&lt;br /&gt;
jetzt hat&#039;s Klick gemacht und ich versteh, worauf Du hinauswillst mit dem formalen Beweis. Klar, im Rahmen von einer Bachelor-Arbeit ist das wichtig, ansonsten wird&#039;s ja unwissenschaftlich.&lt;br /&gt;
&lt;br /&gt;
Im Wesentlichen würd&#039;s wohl darauf hinauslaufen aufzuzeigen, daß jede Regel aus der Quellgrammatik mindestens einen &quot;Partner&quot; in der Zielgrammatik hat, also die Transformation als surjektive Funktion.&lt;br /&gt;
&lt;br /&gt;
Da man am Ende lauffähigen Code haben möchte, kann man da leider die semantische Seite nicht komplett außen vor lassen, denn an sich würde es ja ausreichen nur diese Partnerbeziehungen in der Transformation aufzuzeigen. Das würde allerdings voraussetzen, daß Quell- und Zielsprache nahezu identisch von ihren Features her sind und sich allenfalls in ein paar kleineren Feinheiten unterscheiden (wie fehlendes Semikolon am Ende einer Anweisung).&lt;br /&gt;
&lt;br /&gt;
Angenommen die Quellsprache ist prozedural und die Zielsprache ausschließlich objektorientiert oder vielleicht sogar funktional oder logisch (oha!). Du müßtest also noch eine Menge an Zeug für die Zielsprache drumherumbasteln und beispielsweise für das Klassenkonstrukt der Zielsprache hättest Du keine Entsprechung in der Ausgangsgrammatik. Das bedeutet, daß die Transformation unidirektional wäre - was allerdings okay ist, denn das ist nun mal das, was man meistens auch bei Modelltransformationssprachen hinkriegt, auch wenn man sich gerne wünscht, bidirektionale Verfahren herzustellen.&lt;br /&gt;
&lt;br /&gt;
Abhängig vom Paradigma einer Sprache passieren in der Laufzeitumgebung einige Sachen, die man nicht explizit programmiert - Objektinstanziierung, Vererbung, das Finden einer passenden Regel/Funktion sowie Backtracking bei logischen und funktionalen Programmiersprachen usw.&lt;br /&gt;
Das Transformationsverfahren müßte also ganz klar eingegrenzt werden: Ausgangs- und Zielsprache sollten also schon ein gemeinsames Paradigma teilen und über das gleiche Feature-Set verfügen, oder die Ausgangssprache sollte zumindest (von den Features her) eine Untermenge der Zielsprache sein - ansonsten beweist Du Dir wahrscheinlich noch nen Wolf.&lt;br /&gt;
&lt;br /&gt;
Ich streu mal ein blödes Beispiel hier ein. Angenommen es gibt die Ausgangssprache A mit folgender Art von IF-Statement:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;if&amp;#40;a&amp;#160;==&amp;#160;true&amp;#41;&amp;#160;print&amp;#40;&quot;blabla&quot;&amp;#41;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Die Entsprechung in der Zielsprache B würde so aussehen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;print&amp;#40;&quot;blabla&quot;&amp;#41;&amp;#160;IF&amp;#160;a&amp;#160;==&amp;#160;true&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Ich glaube die Sprache Ruby bietet optional eine solche Syntax.&lt;br /&gt;
&lt;br /&gt;
Quell-Grammatik für das if-Statement:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;IF_STMNT&amp;#160;-&amp;#62;&amp;#160;&#039;if&#039;&amp;#160;&#039;&amp;#40;&#039;&amp;#160;EXPR&amp;#160;&#039;&amp;#41;&#039;&amp;#160;STMNT&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Ziel-Grammatik für das if-Statement:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;IF_STMNT&amp;#160;-&amp;#62;&amp;#160;STMNT&amp;#160;&#039;IF&#039;&amp;#160;EXPR&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Du hast die Grammatik der Ausgangssprache, die Grammatik der Zielsprache. Du weißt, was die jeweiligen Konstrukte machen, im obigen Fall sind sie für dieselbe Funktionsweise verantwortlich (das klarzustellen wäre wahrscheinlich sehr wichtig für den Beweis).&lt;br /&gt;
&lt;br /&gt;
Meiner Meinung nach sind die Literale/Keywords hierbei unerheblich, es geht also nicht darum zu zeigen, daß das &quot;if&quot; aus A zum &quot;IF&quot; aus B wird, sondern lediglich darum, daß die beiden Regeln der Grammatik A sowie Grammatik B semantisch dasselbe sind und die bedeutsamen Teile, welche für die korrekte Funktionsweise des IF-Befehls vonnöten sind, ihren korrekten Platz in der Zielgrammatik finden.&lt;br /&gt;
&lt;br /&gt;
Der Beweis würde sich also ausschließlich darum drehen, daß die semantisch bedeutsamen Teile (in dem obigen Beispiel die Nichtterminalsymbole EXPR und STMNT) in der Zielgrammatik durch die Transformation abgedeckt werden. Diese Elemente werden in der Ausgangsgrammatik gesucht, zwischengespeichert und im Rahmen der Transformation an ihre entsprechenden Plätze der Zielgrammatik eingebaut.&lt;br /&gt;
&lt;br /&gt;
Aufgrund der möglichen Unterschiede in der Gestalt kann man wahrscheinlich einen formalen Beweis nicht weiter abstrahieren und auf eine kleine Menge an Sätzen reduzieren. Der Beweis müßte vermutlich für jede Regel der Ausgangsgrammatik erbracht werden.&lt;br /&gt;
&lt;br /&gt;
Vielleicht fällt Dir ein Verfahren ein, bei der Du in einer Datenstruktur die semantischen Komponenten der Grammatik A auf die Komponenten der Grammatik B mappst und somit irgendwie automatisiert einen Transformationsalgorithmus die richtigen Entscheidungen treffen läßt. Das wäre elegant, aber nochmal ein ganz eigenes Thema auf Korrektheit zu beweisen. 
    </content:encoded>

    <pubDate>Mon, 12 Oct 2009 13:11:06 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c65</guid>
    
</item>
<item>
    <title>derschreckliche: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c64</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (derschreckliche)</author>
    <content:encoded>
    Hi Thomas,&lt;br /&gt;
&lt;br /&gt;
danke für den Tipp mit &quot;ecore&quot;, bin bei der Recherche da irgendwie nicht drübergestolpert.&lt;br /&gt;
&lt;br /&gt;
Was das Validieren mit Hilfe von Tests angeht: &lt;br /&gt;
Klar, das würde natürlch gehen, ist aber dann keine formale Korrektheit. &lt;br /&gt;
(Ich schreibe gerade an meiner Bachelorarbeit und mein Prof. mag es gerne formal &lt;img src=&quot;http://people.avona.com/~thomas.werner/templates/slideshowbob/img/emoticons/wink.gif&quot; alt=&quot;;)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; )&lt;br /&gt;
&lt;br /&gt;
Zu deiner Aussage: &lt;br /&gt;
&quot;Da Du in Deinem Algorithmus die Umwandlung selbst in der Hand hast, weißt Du ja im Vorfeld, daß das Resultat der gewünschten Zielsprache entspricht oder entsprechen sollte.&quot; &lt;br /&gt;
Genau zwischen dem &quot;entspricht&quot; und &quot;entsprechen sollte&quot; liegt ja der Unterschied &lt;img src=&quot;http://people.avona.com/~thomas.werner/templates/slideshowbob/img/emoticons/wink.gif&quot; alt=&quot;;)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; .&lt;br /&gt;
&lt;br /&gt;
Und zu:&lt;br /&gt;
&quot;...weil Du ja die Zielgrammatik schon davor im Zwischenschritt bei der Generierung des Zielquelltexts angewendet hast...&quot;&lt;br /&gt;
Genau da bin ich ja am grübeln. Habe ich das?&lt;br /&gt;
Wo genau mach ich das? Und wie?&lt;br /&gt;
&lt;br /&gt;
Hier mal ein Paar meiner Überlegungen hierzu:&lt;br /&gt;
&lt;br /&gt;
Die Transformationsfunktion würde jeder Regel der Ausgangsgrammatik eine &quot;in sich konsistente&quot;(was das bedeuten soll erkläre ich gleich) Folge von Konstruktionsregeln der Zielgrammatik zuweisen würde.&lt;br /&gt;
&quot;in sich konsistent&quot; soll hier heißen, dass der dabei konstruierte Teilbaum des Ziel-AST mit Hilfe der Regeln der Zielgrammatik gebildet wird.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für zwei solcher Regeln&lt;br /&gt;
(  T sei die Transformationsfunktion, &lt;br /&gt;
   A-&gt;bCd und C-&gt;efg seien Regeln der Quellgrammatik und &lt;br /&gt;
   Regeln der rechten Seite, in den eckigen Klammern gehören zur Zielgrammatik. &lt;br /&gt;
   In geschweiften Klammer die semantischen Aktionen hierzu.&lt;br /&gt;
   Über .val wird auf die Werte zugegriffen&lt;br /&gt;
   Verarbeitung Buttom-Up):&lt;br /&gt;
&lt;br /&gt;
T(C-&gt;efgh) = [&lt;br /&gt;
    Q-&gt;q { createNode(q, h.val); //Ergebnis wird oben auf den Stack gelegt.&lt;br /&gt;
               createNode(Q, null);   //Ergebnis wird oben auf den Stack gelegt.&lt;br /&gt;
               stackTop.appendChild();//Darunterliegendes Element als Kind anhängen - &#039;q&#039;&lt;br /&gt;
    } ,&lt;br /&gt;
    P-&gt;rs { createNode(r, concat(e.val, f.val)); //Ergebnis wird oben auf den Stack gelegt.&lt;br /&gt;
                createNode(s, g.val); //Ergebnis wird  oben auf den Stack gelegt.&lt;br /&gt;
                createNode(P, null); //Erge...&lt;br /&gt;
                stackTop.appendChild(); //Darunterliegendes Element als Kind anhängen - &#039;s&#039;&lt;br /&gt;
                stackTop.appendChild(); //Darunterliegendes Element als Kind anhängen - &#039;r&#039;&lt;br /&gt;
    }, &lt;br /&gt;
    O-&gt;PQ { createNode(O, null); //Erge...&lt;br /&gt;
                  stackTop.appendChild(); //Darunte... &#039;P&#039;&lt;br /&gt;
                  stackTop.appendChild(); //Darunte... &#039;Q&#039;&lt;br /&gt;
    } , &lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
T(A-&gt;bCd) = [&lt;br /&gt;
    N-&gt;n{  createNode(n, b.val);&lt;br /&gt;
              createNode(N, null);&lt;br /&gt;
              stackTop.appendChild(); //Darunte... &#039;n&#039;&lt;br /&gt;
    } ,&lt;br /&gt;
    M-&gt;O {&lt;br /&gt;
//--------------------------------------&lt;br /&gt;
//-- Ergebnis des vorherigen Transformationsschrittes (Reduktion zu &#039;C&#039;) liegt unterhalb von &#039;N&#039; auf dem Stack. Wir hängen dieses an, indem wir stackTop.appendChild(2) aufrufen, also das zwiete Element unterhalb des stackTop an diesen anhängen.&lt;br /&gt;
                    createNode(M, null);         //Erg....&lt;br /&gt;
                    stackTop.appendChild(2); //Erg. des vorh. Tra.fo.Schrittes anhängen - &#039;O&#039;&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
    } ,&lt;br /&gt;
    L-&gt;l {  createNode(l, d.val);&lt;br /&gt;
              createNode(L, null);&lt;br /&gt;
              stackTop.appendChild(); //Darunte... &#039;l&#039;&lt;br /&gt;
    } ,&lt;br /&gt;
    K-&gt;LMN {  createNode(K, null);&lt;br /&gt;
                    stackTop.appendChild(); //Darunte... &#039;L&#039;&lt;br /&gt;
                    stackTop.appendChild(); //Darunte... &#039;M&#039;&lt;br /&gt;
                    stackTop.appendChild(); //Darunte... &#039;N&#039;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
Soviel zur &quot;in sich konsistent&quot; bzw. lokalen Korrektheit. &lt;br /&gt;
Jedoch kann ich ja nicht davon ausgehen, dass bei jeder Regel, in der nach &#039;C&#039; reduziert wird auch ein &#039;O&#039; erzeugt wird. Ich könnte ja auch eine Regel haben, bei der zu &#039;C&#039; reduziert wird und dabei ein &#039;Z&#039; und kein &#039;O&#039; erzeugt wird... ?!?&lt;br /&gt;
&lt;br /&gt;
Obwohl ich gerade eine Idee bekomme: &lt;br /&gt;
Ich könnte eine Art &quot;look ahead&quot; einbauen[= oberstes Element auf dem Stack], d.h. &lt;br /&gt;
&lt;br /&gt;
T(QRegel) = switch(&quot;look ahead&quot;) { hier der Rest }&lt;br /&gt;
&lt;br /&gt;
oder auch nur bei Regeln, die auf NichtTerminale zugreifen?&lt;br /&gt;
T(QRegel) = [...., //auf NT auf rechter Seite von QRegel zugreifende ZRegel&lt;br /&gt;
                    ZRegel{ switch (&quot;lookahead&quot;) { hier der Rest } },&lt;br /&gt;
...&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
Somit könnte ich entscheiden, ob bei der letzten Reduktion ein &#039;O&#039; oder ein(oder auch mehrere) &#039;Z&#039; herausgekommen ist.&lt;br /&gt;
Solange ich das eindeutig Anhand des obersten Stackelementes, also einen &quot;look ahead&quot; von 1, bestimmen kann welche Elemente im Ziel-AST zu erstellen sind, dürfte das korrekt sein, solange ich fü jeden Fall eine Entsprechung in der Zielgrammatik finde, oder?&lt;br /&gt;
&lt;br /&gt;
Was meinst du dazu?&lt;br /&gt;
&lt;br /&gt;
Ich weiss, es ist etwas viel, sorry! &lt;br /&gt;
Ich dachte nur etwas Gedankenaustausch dazu kann sicherlich nicht schaden. &lt;img src=&quot;http://people.avona.com/~thomas.werner/templates/slideshowbob/img/emoticons/wink.gif&quot; alt=&quot;;)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Greeeeeeeeeeeetz und danke nochmals für all die Ideen, Anregungen, etc.&lt;br /&gt;
&lt;br /&gt;
derschreckliche 
    </content:encoded>

    <pubDate>Mon, 12 Oct 2009 03:50:26 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c64</guid>
    
</item>
<item>
    <title>Thomas Werner: Scribblenauts - die Feder ist so mächtig wie eine Atombombe</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/65-Scribblenauts-die-Feder-ist-so-maechtig-wie-eine-Atombombe.html#c63</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/65-Scribblenauts-die-Feder-ist-so-maechtig-wie-eine-Atombombe.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=65</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Uff... da ist mir grad ein makabrer Level aufgefallen. Da läuft ein Männlein nen Hang runter, wird vom Blitz erschlagen, fällt tot um und läuft sofort blau an. Dann kommt die Aufgabenstellung: &quot;Berge die Leiche und begrabe sie&quot;. Wow. Man muß den Blaumann aufheben, in nen Sarg stecken und unter die Erde bringen. Wirklich krass. Keine Ahnung, was ein Sechsjähriger dazu sagen würde. 
    </content:encoded>

    <pubDate>Sun, 11 Oct 2009 13:21:02 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/65-guid.html#c63</guid>
    
</item>
<item>
    <title>Thomas Werner: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c62</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Zunächst zur Frage mit dem (Meta-)Modell: das ist einfach nur implementierungsspezifisch. Ob die Modelle als XML-Dateien, Binärdateien, spezieller Quellcode oder in einer SQL-Datenbank vorkommen, hängt vom jeweiligen Werkzeug ab. &lt;br /&gt;
&lt;br /&gt;
Soweit ich noch in Erinnerung hab gibt es für die meisten Modelltransformationssprachen eine einheitliche Sprache, die zur Beschreibung von Modellen und Metamodellen dient. Ich glaub, die nennt sich &quot;ecore&quot; und es handelt sich um XML zur Definition von Klassen / Typen / Attributen und Relationen untereinander.&lt;br /&gt;
&lt;br /&gt;
Zur zweiten Fragen wegen der Validierung: das ist bei Programmiersprachen aufgrund ihrer Grammatik an sich machbar, Du erstellst Dir Testfälle, welche gültigen Quellcode sowie ungültigen Quellcode darstellen und jagst die einzelnen Quelltexte durch den Parser, um zu gucken, ob an den richtigen Stellen gemeckert wird.&lt;br /&gt;
&lt;br /&gt;
Das Thema der automatisierten Validierung der Korrektheit eines Algorithmus geht allerdings schon in den Bereich der Theoretischen Informatik - sprich: man träumt derzeit noch davon, Verfahren zu entwickeln, die es ermöglichen herauszufinden, ob ein Algorithmus wirklich das macht, was man von ihm erwartet.&lt;br /&gt;
&lt;br /&gt;
Mit Fehlern muß man leider rechnen und man kann sie allenfalls durch fleißiges Unit Testing eindämmen, aber komplett ausschließen ist leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
Da Du in Deinem Algorithmus die Umwandlung selbst in der Hand hast, weißt Du ja im Vorfeld, daß das Resultat der gewünschten Zielsprache entspricht oder entsprechen sollte. Du hast es ja nicht mit einer beliebigen Eingabe eines Benutzers zu tun, sondern mit einem Resultat Deines Programms. Dieses Resultat zu validieren, wäre ja dann einfach eine Frage der Anwendung der Zielgrammatik darauf. Es ist halt die Frage, ob das wirklich notwendig ist, weil Du ja die Zielgrammatik schon davor im Zwischenschritt bei der Generierung des Zielquelltexts angewendet hast, daher würde ich diese Prüfung mit der Zielgrammatik nicht als festen Bestandteil des Umwandlungsprogramms sehen, sondern als einen extern angelegten Unit Test zur Prüfung der Qualität des Programms. 
    </content:encoded>

    <pubDate>Sun, 11 Oct 2009 13:02:57 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c62</guid>
    
</item>
<item>
    <title>derschreckliche: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c61</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (derschreckliche)</author>
    <content:encoded>
    Vielen Dank für die Anregungen, hat mir auch viele Anhaltspunkte für weitere Recherchen geliefert.&lt;br /&gt;
&lt;br /&gt;
Wo ich aber leider kaum etwas dazu gefunden habe ist wie so ein Modell bzw. Metamodell beschrieben wird. Mit MOF? Grafisch?&lt;br /&gt;
&lt;br /&gt;
Zu dem vorgeschlagenen Vorgehen für die Transformaiton:&lt;br /&gt;
So in etwa habe ich mir das auch vorgestellt. Und ob man den AST der Zielsprache zuerst aufbaut, ob in place oder nicht, oder gleich Code generiert ist ja (fast) egal &lt;img src=&quot;http://people.avona.com/~thomas.werner/templates/slideshowbob/img/emoticons/wink.gif&quot; alt=&quot;;)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; .&lt;br /&gt;
Allerdings bleibt das Problem der Validierung in beiden Fällen bestehen. [Obwohl man bei Generierung eines Zielsprachen-AST diesen natürlich mit einem Visitor unter Zurhilfenahme der Zielgrammatik durchlaufen und prüfen könnte... ]&lt;br /&gt;
Interessant wäre es aber vor allem den Regelsatz(ich nenne ihn mal Transformationsfunktion) vorab mit Hilfe der Ziel-Grammatik auf Korrektheit prüfen zu können, denn wenn ich bei der Transformationsfunktion alles mögliche angeben kann, kann ich ja nicht sicher gehen, dass jede _korrekte_ Eingabe auch eine korrekte Ausgabe liefert - ich also eine Vollständige Abbildung habe.&lt;br /&gt;
&lt;br /&gt;
So, das waren ein Paar Gedanken meinerseits dazu, bin gespannt ob du auch etwas kennst, was in diese Richtung geht, habe bisher kaum etwas dazu finden können.&lt;br /&gt;
&lt;br /&gt;
Freue mich wie schon oben erwähnt sehr auf den kommenden Artikel.&lt;br /&gt;
&lt;br /&gt;
Greeeeeeeeeeeeetz,&lt;br /&gt;
&lt;br /&gt;
derschreckliche 
    </content:encoded>

    <pubDate>Sun, 11 Oct 2009 06:51:40 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c61</guid>
    
</item>
<item>
    <title>Thomas Werner: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c60</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Während meines Studiums beschäftigte ich mich zwei Semester lang mit dem Thema Modelltransformation (siehe http://de.wikipedia.org/wiki/Modelltransformation) - das ist im Prinzip ein relativ frisches Forschungsfeld, welches sich unter Anderem mit genau dem Thema beschäftigt, eine Programmiersprache in eine andere Programmiersprache umzuwandeln.&lt;br /&gt;
&lt;br /&gt;
Grundidee ist, daß ein Quellcode als ein Modell betrachtet wird. Diesem Modell liegt ein Metamodell zugrunde, welches die Möglichkeiten der Modellgestaltung ausdrückt (im Grunde wie eine Grammatik). Im Rahmen der Modelltransformation bastelt man sich Regeln, wie man die Informationen aus dem Metamodell A auf die Informationen aus einem anderen Metamodell B abbildet.&lt;br /&gt;
&lt;br /&gt;
Hier kann man so Späße machen wie: verwandle mir ein UML-Klassendiagramm in eine SQL-Datenbank und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
Für die Modelltransformation gibt es einige Modelltransformationssprachen und dazugehörige Werkzeuge, unter anderem QVT (textuell) oder MOLA (grafisch - hier wird die Transformation über Diagramme ausgedrückt).&lt;br /&gt;
&lt;br /&gt;
Leider sind ein paar der vorhandenen Werkzeuge derzeit etwas instabil, weil es sich eben auch um Neuland handelt. Andere Werkzeuge sind dagegen stabil und dafür teuer.&lt;br /&gt;
&lt;br /&gt;
Wenn man die Transformation von einer Sprache in eine andere sauber machen möchte, würde ich das folgendermaßen angehen:&lt;br /&gt;
&lt;br /&gt;
1. Den AST für die Ausgangssprache erstellen&lt;br /&gt;
&lt;br /&gt;
2. Mit Hilfe eines Regelsatzes den Ausgangs-AST in den AST der Zielsprache umwandeln (wobei mir gerade einfällt, daß man sich diesen Schritt sparen könnte und den Ausgangs-AST direkt in JavaScript-Code wandeln könnte)&lt;br /&gt;
&lt;br /&gt;
3. Den Ziel-AST zurückwandeln in Quellcode - also im Grunde die Schritte umkehren, die der Parser angestellt hat.&lt;br /&gt;
&lt;br /&gt;
Da ich das Thema ziemlich spannend finde, werde ich mir - sobald ich Zeit habe - selbst Gedanken dazu machen und einen Artikel darüber schreiben. 
    </content:encoded>

    <pubDate>Thu, 08 Oct 2009 13:53:13 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c60</guid>
    
</item>
<item>
    <title>derschreckliche: [Compilerbau II] Der Abstrakte Syntaxbaum</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#c59</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/45-Compilerbau-II-Der-Abstrakte-Syntaxbaum.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=45</wfw:comment>

    

    <author>nospam@example.com (derschreckliche)</author>
    <content:encoded>
    Hi Thomas,&lt;br /&gt;
&lt;br /&gt;
auch diesen Artikel fand ich äußerst hilfreich, auch wenn er nicht auf alle Details eingeht, aber das ist im Rahmen eines Artikels von 3 Seiten länge ja auch nicht möglich.&lt;br /&gt;
&lt;br /&gt;
Eine Frage hätte ich noch:&lt;br /&gt;
Ich habe im Quellcode der Live-Version des Interpreters gesehen, dass du die Befehle beim durchlaufen des AST direkt ausführst. Das funktioniert ja auch super, da du für viele Funktionen ja direkte Entsprechungen in JavaScript hast.&lt;br /&gt;
Angenommen du wolltest JavaScript-Code generieren, anstatt die Anweisungen direkt auszuführen, wüsstest du da eine Möglichkeit sicherzustellen, dass der generierte Code _valides_ JavaScript ist?&lt;br /&gt;
&lt;br /&gt;
Mir würde auch schon ein Link oder eine Buchempfehlung zu diesem Thema schon sehr weiterhelfen.&lt;br /&gt;
&lt;br /&gt;
Die Möglichkeiten, die mir einfallen würden wären zum einen: &lt;br /&gt;
  - Parsen des Outputs mit Hilfe eines JS-Parsers,&lt;br /&gt;
zum anderen:&lt;br /&gt;
  - Übersetzungsschemata angeben und deren Korrektheit beweisen.&lt;br /&gt;
Ersteres hat den Nachteil, erst nach Anwendung der Transformation feststellen zu können, ob diese korrekt ist oder nicht.&lt;br /&gt;
Letzteres ist erstens nicht ganz trivial, und zweitens stellt zwar sicher, dass die einzelnen Transformationsregeln &quot;lokal&quot; korrekt sind, jedoch nicht ob diese &quot;untereinander/zueinander&quot; korrekt sind....&lt;br /&gt;
*grübel*grübel*&lt;br /&gt;
&lt;br /&gt;
Freue mich schon auf den kommenden Artikel zu diesem Thema.&lt;br /&gt;
&lt;br /&gt;
Greeeeeeeeeeetz&lt;br /&gt;
&lt;br /&gt;
derschreckliche 
    </content:encoded>

    <pubDate>Thu, 08 Oct 2009 04:40:45 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/45-guid.html#c59</guid>
    
</item>
<item>
    <title>derschreckliche: [Compilerbau] Parser Marke Eigenbau</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/42-Compilerbau-Parser-Marke-Eigenbau.html#c58</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/42-Compilerbau-Parser-Marke-Eigenbau.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=42</wfw:comment>

    

    <author>nospam@example.com (derschreckliche)</author>
    <content:encoded>
    Super Artikel, vielen Dank hierfür!&lt;br /&gt;
&lt;br /&gt;
Ich beschäftige mich auch gerade mit diesem Thema und ich muss sagen, du hast es geschafft viele Zusammenhänge sehr gut und verständlich zu erklären, ohne dabei zu sehr in die Tiefe zu gehen.&lt;br /&gt;
Das Problem hatte ich teilweise beim aktuellen &quot;Drachenbuch&quot;, da fand ich &quot;Grundlagen und Techniken des Compilerbaus&quot; von Niklaus Wirth, auf welches du ja auch verweist, schon viel besser.&lt;br /&gt;
&lt;br /&gt;
Welches Buch ich aber noch für &quot;außergewöhnliche&quot; Anwendungsbereiche empfehlen kann ist &quot;Übersetzerbau - Techniken, Werkzeuge, Anwendungen&quot; von Güting und Erwig. Dort vor allem das Kapitel 5, welches die Übersetzung einer Dokumentenbeschreibungssprache beschreibt. (PD-Text[ähnelt mancher Wiki-Syntax] nach LaTeX).&lt;br /&gt;
Leider steht da nicht viel zur Validierung der Transformation, also zu Möglichkeiten, sicherzustellen, dass die Ausgabe in der Zielsprache liegt...&lt;br /&gt;
&lt;br /&gt;
Naja, ich werde mal deinen zweiten Artikel lesen, vllt. finde ich ja da etwas in der Richtung.&lt;br /&gt;
&lt;br /&gt;
Nochmals vielen Dank für den schönen Artikel.&lt;br /&gt;
&lt;br /&gt;
Greeeeeeeeeetz&lt;br /&gt;
&lt;br /&gt;
derschreckliche 
    </content:encoded>

    <pubDate>Thu, 08 Oct 2009 03:11:18 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/42-guid.html#c58</guid>
    
</item>
<item>
    <title>Thomas Werner: Ein Thema voller Mißverständnisse: o.o.p.</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/40-Ein-Thema-voller-Missverstaendnisse-o.o.p..html#c51</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/40-Ein-Thema-voller-Missverstaendnisse-o.o.p..html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=40</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Okay, zu meiner Verteidigung... nein, hierfür gibt es keine plausible Entschuldigung. Seit Anfang des Jahres hatte ich diesen Artikel als Entwurf und wollten ihn noch mit speziell angefertigten Illustrationen verfeinern, die so aussehen wie aus dem Tampon-Beipackzettel.&lt;br /&gt;
&lt;br /&gt;
Ich hab keine Ahnung, was mich damals trieb, das zu schreiben, aber ich denke, es mußte endlich mal raus...&lt;br /&gt;
&lt;br /&gt;
Mein zukünftiger Arbeitgeber möge mir diesen Artikel verzeihen. 
    </content:encoded>

    <pubDate>Mon, 07 Sep 2009 17:49:48 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/40-guid.html#c51</guid>
    
</item>
<item>
    <title>Thomas Werner: Annahme ausgelöst und nicht aufgefangen - oder JavaScript im Internet Explorer</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#c45</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=18</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Ich hab den Code schon gesehen, es wird nur so kaputt dargestellt, wie man das jetzt bei Deinem Kommentar sieht. Aber naja...&lt;br /&gt;
&lt;br /&gt;
Zum Problem: ich fürchte, ich kann da nicht weiterhelfen. Ich würde versuchen da anders ranzugehen und rumzuexperimentieren. Statt span mal nen DIV probieren. Vielleicht hilft es auch, wenn Du Dich in eine etablierte JavaScript-Bibliothek wie JQuery, prototype oder Dojo einarbeitest. Darin finden sich auch meist Problemlösungen für diverse Browser-Wehwechen.&lt;br /&gt;
&lt;br /&gt;
Abschließend würde ich noch vorschlagen, daß Du zuerst einmal versuchst, das Aussehen Deines Menüs fest in HTML zu programmieren. Versuch&#039;s so zu machen, daß es im IE anständig aussieht. Vielleicht sind da die Probleme auch bereits gegeben.&lt;br /&gt;
&lt;br /&gt;
Da Du in Dein Menü noch speziellen HTML-Code einbaust, der nur für den Internet Explorer sichtbar ist (Kommentar-Code), verändert sich für den IE natürlich auch die Anzahl der Kindknoten des Eltern-Knotens. Der Code: &lt;br /&gt;
&lt;br /&gt;
Menue.insertBefore(span, Menue.childNodes[3]);&lt;br /&gt;
&lt;br /&gt;
Verweist dadurch wahrscheinlich im IE an die falsche Stelle im DOM-Baum. Mach&#039;s doch folgendermaßen: Die beiden unsortierten Listen (ul) sind ja fest im HTML-Code. Gib doch der zweiten &quot;ul&quot; eine id und mach folgendes:&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&#039;zweiteUlID&#039;).insertBefore(span);&lt;br /&gt;
&lt;br /&gt;
Das muß an sich funktionieren. Wenn nicht, dann hakts sicherlich an einer anderen Stelle in Deinem Code.&lt;br /&gt;
&lt;br /&gt;
Wegen dem Breitenwert &quot;0&quot; gibts folgende JavaScript-Lösung, die ich aus meiner eigenen JavaScript-Bibliothek herauskopiert hab:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;javascript&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #009900; font-style: italic;&quot;&gt;// Teste, ob IE am Laufen ist:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;isIE&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; window.&lt;span style=&quot;color: #006600;&quot;&gt;getComputedStyle&lt;/span&gt; = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;node&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; toReturn = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; toReturn.&lt;span style=&quot;color: #006600;&quot;&gt;getPropertyValue&lt;/span&gt; = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;prop&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; prop = prop.&lt;span style=&quot;color: #006600;&quot;&gt;hyphenToCamelCase&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&#039;&lt;/span&gt;+prop&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;width&#039;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;node.&lt;span style=&quot;color: #006600;&quot;&gt;currentStyle&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;prop&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; == &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;auto&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; node.&lt;span style=&quot;color: #006600;&quot;&gt;offsetWidth&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;height&#039;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;node.&lt;span style=&quot;color: #006600;&quot;&gt;currentStyle&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;prop&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; == &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;auto&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; node.&lt;span style=&quot;color: #006600;&quot;&gt;offsetHeight&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; node.&lt;span style=&quot;color: #006600;&quot;&gt;currentStyle&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;prop&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; toReturn; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;String.&lt;span style=&quot;color: #006600;&quot;&gt;prototype&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;hyphenToCamelCase&lt;/span&gt; = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; str = &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900; font-style: italic;&quot;&gt;// Achtung: &amp;gt; ist ein Größer-Als-Zeichen!&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;str.&lt;span style=&quot;color: #006600;&quot;&gt;indexOf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt; -&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; parts = str.&lt;span style=&quot;color: #006600;&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; str = parts&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900; font-style: italic;&quot;&gt;// &amp;lt; ist ein Kleiner-Als-Zeichen&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; i = &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;; i &amp;lt; parts.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;; i++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; str += parts&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;toUpperCase&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; + parts&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; str;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Die Methode window.getComputedStyle(node) ist an sich ne Standard-Funktion, die nur der IE nicht kennt.&lt;br /&gt;
&lt;br /&gt;
Anwendung:&lt;br /&gt;
&lt;div class=&quot;javascript&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; result = window.&lt;span style=&quot;color: #006600;&quot;&gt;getComputedStyle&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;node&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; breite = result.&lt;span style=&quot;color: #006600;&quot;&gt;getPropertyValue&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;width&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Jun 2009 14:35:53 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/18-guid.html#c45</guid>
    
</item>
<item>
    <title>Daniel: Annahme ausgelöst und nicht aufgefangen - oder JavaScript im Internet Explorer</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#c44</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=18</wfw:comment>

    

    <author>nospam@example.com (Daniel)</author>
    <content:encoded>
    Hallo Thomas,&lt;br /&gt;
&lt;br /&gt;
ich sehe jetzt gerade, das mein HTML-Code hier nicht erschienen ist.&lt;br /&gt;
Daher konntest du mein Fall nicht ganz verstehen.&lt;br /&gt;
Füge sie jetzt noch mal hier ein und hoffe, dass du mich dann besser verstehst.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;	
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
				1.0
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	1.1

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
							1.1.1
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
							1.1.2
						
					
					
				
				
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	1.2

					
					
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
							1.2.1
						
						
							1.2.2
						
						
							1.2.3
						
						
							1.2.4
						
					
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
			&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
				
					1.3
				
				
					1.4
				
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	
					1.5
				
			
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	2.0
			

			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
				
					2.1
				
				
					2.2
				
				
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	2.3
				
			
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	3.0
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	4.0
			
		
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	5.0
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	6.0
			

			
			
				
					6.1
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
				
					6.2
				
			
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;

	
		
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	6.1
			
		
		
			
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	6.2
			
		
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Das mit &quot;display:inline-block&quot; habe ich versucht aber Hilft auch nichts.&lt;br /&gt;
Du hast recht mit dem Breitenwert.&lt;br /&gt;
Bekomme tatsächlich die 0 raus.&lt;br /&gt;
Aber habe auch Manuell ein Breitenwert (also ein statischen Wert) eingegeben und es tut sich einfach nichts.&lt;br /&gt;
&lt;br /&gt;
Bin echt am zweifeln !!!&lt;br /&gt;
&lt;br /&gt;
Viele Grüße,&lt;br /&gt;
Daniel 
    </content:encoded>

    <pubDate>Mon, 29 Jun 2009 13:36:23 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/18-guid.html#c44</guid>
    
</item>
<item>
    <title>Thomas Werner: Annahme ausgelöst und nicht aufgefangen - oder JavaScript im Internet Explorer</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#c43</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=18</wfw:comment>

    

    <author>nospam@example.com (Thomas Werner)</author>
    <content:encoded>
    Ich muß da nochmal nachhaken, weil ich immer noch nicht genau weiß, was bei Dir nicht funktioniert. Wird das eingefügte Span überhaupt nicht dargestellt oder wird die gewünschte Breite nicht gesetzt? Das mit der Breite könnte an einer Darstellungseigenschaft des Spans liegen, und du könntest zusätzlich die CSS-Eigenschaft &quot;display:inline-block&quot; versuchen. Dadurch bekommt das Span noch Block-Eigenschaften und dadurch ist dann auch das Setzen einer festen Breite vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Welchen Breitenwert liest Dein JavaScript-Code eigentlich im Internet Explorer aus? Ist es vielleicht 0?&lt;br /&gt;
&lt;br /&gt;
Als weiterer Hinweis: Dein JavaScript-Code verwendet die Liste childNodes, welche in den verschiedenen Browsern, abhängig vom HTML-Code, unterschiedlich beschaffen sein kann. Firefox macht zum Beispiel selbst aus unbedeutendem Whitespace eigenständige Textknoten - IE verhält sich da etwas anders und scheint sich mehr &quot;auf&#039;s Wesentliche&quot; zu konzentrieren.&lt;br /&gt;
&lt;br /&gt;
Ansonsten würde ich das Span bereits vorher einbauen und unsichtbar machen. 
    </content:encoded>

    <pubDate>Mon, 29 Jun 2009 10:15:34 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/18-guid.html#c43</guid>
    
</item>
<item>
    <title>Daniel: Annahme ausgelöst und nicht aufgefangen - oder JavaScript im Internet Explorer</title>
    <link>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#c42</link>
            <category></category>
    
    <comments>http://people.avona.com/~thomas.werner/index.php?/archives/18-Annahme-ausgeloest-und-nicht-aufgefangen-oder-JavaScript-im-Internet-Explorer.html#comments</comments>
    <wfw:comment>http://people.avona.com/~thomas.werner/wfwcomment.php?cid=18</wfw:comment>

    

    <author>nospam@example.com (Daniel)</author>
    <content:encoded>
    Hallo Thomas,&lt;br /&gt;
&lt;br /&gt;
hm, habe das mit &quot;insertBefore&quot; über den Style geschrieben - sprich erst wird der Span-Tag eingefügt und dann der Style aber leider funktioniert das auch nicht.&lt;br /&gt;
&lt;br /&gt;
Mein HTML Code sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight:bold&quot;&gt;TW:&lt;/span&gt; &lt;span style=&quot;font-style:italic&quot;&gt;Tut mir leid, ich krieg den HTML-Code nicht dargestellt. Irgendwie spinnt das Geshi-Plugin herum.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Der Span-Tag soll via JS genau zwischen den beiden UL-Tags eingefügt werden.&lt;br /&gt;
Also da wo ul#nav und ul#nav2 steht.&lt;br /&gt;
&lt;br /&gt;
Anschließend soll der Width Dynamisch für Span-Tag geändert werden.&lt;br /&gt;
Und zwar mit der Abhängigkeit, dass im ul#nav wo der &quot;selectMenue&quot; existiert davon der Position vom linken Rand aus soll für den Span-Tag Width eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Ich hoffe ich konnte mein Ziel gut beschreiben.&lt;br /&gt;
Falls du fragen haben solltest, dann einfach noch mal Fragen !!!&lt;br /&gt;
&lt;br /&gt;
Würde dir echt sehr Dankbar sein, wenn du mir Helfen könntest.&lt;br /&gt;
Bin echt am zweifeln momentan.&lt;br /&gt;
&lt;br /&gt;
Viele Grüße,&lt;br /&gt;
Daniel 
    </content:encoded>

    <pubDate>Mon, 29 Jun 2009 02:03:54 +0200</pubDate>
    <guid isPermaLink="false">http://people.avona.com/~thomas.werner/index.php?/archives/18-guid.html#c42</guid>
    
</item>

</channel>
</rss>