Paul: Formular auf aktuell erzeugtes Iframe leiten und validator

Hallo,

ich erzeuge die Ausgabe eines Formulars in einem Iframe.

Nun habe ich eine Version die zwar funktioniert, hierbei verwende ich display none/block. Eigentlich hatte ich mir das aber anders gedacht, das Element sollte zur Laufzeit generiert werden und danach auch wieder entfernt werden. Nur bei dieser Variante spielt mein Formular nicht mehr mit, es sendet anscheinend nichts.

Bevor ich nun die beiden Quelltexte zeige noch ein Wort zum Validator:

Als erste Fehlermeldung, da hatte ich den html tag noch so: <html>, sagt er mir ich solle doch folgendes verwenden:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Ok, dann mache ich das und bekomme dann als Fehlermeldung dazu:

Line 2, Column 62: there is no attribute "lang".

Was denn nun, versteh ich nicht.

Danach kommen noch 11 weitere Fehler, die ich ebensowenig verstehe.
Aber hat wohl damit zu tun das es Javascript ist.

Na gut wie dem auch sei hier nun die Quelltexte:

######## 1. So funktioniert es leider nicht #####################

  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  lang="en">  
<head>  
<title>xxx</title>  
<style type="text/css">  
  
*{font-family:arial;}  
html{overflow-x:hidden;overflow-y:auto;}  
  
body,html{margin:0;padding:0;height:100%;width:100%;}  
  
body{  
background-color:#ffffff;  
color:#676767;  
font-size:13px;  
}  
/* ############# IFR ############### */  
  
#ifrid{  
width:84%;height:90%;  
position:absolute;top:4%;left:7%;  
margin:auto;  
padding:0px;  
filter:alpha(opacity=90);  
-moz-opacity: 0.9;  
opacity: 0.9;  
background-color:#69821E;  
text-align:center;  
}  
  
  
#ifrid p{  
padding:3px;  
margin:0;  
}  
#ifrid input{  
font-size:11px;  
color:#000000;  
font-family:arial;  
padding:3px;  
margin:0px auto;  
}  
#ifrid iframe{  
margin:auto;  
height:80%;  
width:99%;  
overflow:auto;  
}  
/* ##### END IFR ###### */  
  
</style>  
  
<script type="text/javascript">  
// #################################################  
function ifr_control()  
{  
var tag_id    = 'ifrid';                              // WICHTIG, die id des umgebenden Elementes  
var starttag  = '<div id="'+tag_id+'">';              // Start des umgebenden Tags: div,p,span alles geht  
var endtag    = '</div>';                             // Ende des umgebenden Tags  
var buttontxt = 'close';                              // Text des Schliessen-Buttons  
var ifr_src   = 'http://de.search.yahoo.com/';        // Standard URL des iframes  
var ifr_name  = 'ifrname';                            // WICHTIG muss auch target Name im Formular  
var ifr_extra = ' scrolling="auto" frameborder="0"';   // Alles was sonst noch an Attribute sein soll  
  
  
// #### Falls der Layer schon offen ist, wird er nun entfernt aus dem HTML ####  
if(document.getElementById(tag_id) )  
{  
  var knoten  = document.getElementById(tag_id);  
  knoten.parentNode.removeChild(knoten);  
  
  //alert(document.getElementsByTagName('body')[0].innerHTML); // nur zum testen  
  return true;  
}  
  
// #### Falls der Layer nicht offen/vorhanden ist, wird er nun erzeugt ####  
  
// *JS braucht bei langen Strings, im Gegenssatz zu php, einen Backslash wegen mehrzeilenstring.  
var neues = starttag+'<p><input onclick="ifr_control();" type="button" value="'+buttontxt+'" /></p>\  
<iframe src="'+ifr_src+'" name="'+ifr_name+'"'+ifr_extra+'></iframe>'+endtag;  
  
var obj_1 = document.getElementsByTagName('body')[0];  
obj_1.innerHTML = neues+obj_1.innerHTML;  
  
return true;  
} // ###########  end of js func. #############  
</script>  
  
  
</head>  
<body>  
  
<div style="margin:200px auto;text-align:center;">  
<form action="http://www.google.com/search" onsubmit="ifr_control();" target="ifrname">  
<input type="text" name="q" value="selfhtml" />  
<input type="submit" value="irgendwas senden" />  
</form>  
</div>  
</body>  
</html>  

uns so funktioniert es zwar, aber.....
  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
<head>  
<title>xxx</title>  
<style type="text/css">  
  
*{font-family:arial;}  
html{overflow-x:hidden;overflow-y:auto;}  
  
body,html{margin:0;padding:0;height:100%;width:100%;}  
  
body{  
background-color:#ffffff;  
color:#676767;  
font-size:13px;  
}  
/* ############# IFR ############### */  
  
#ifrid{  
display:none;  
width:84%;height:90%;  
position:absolute;top:4%;left:7%;  
margin:auto;  
padding:0px;  
filter:alpha(opacity=90);  
-moz-opacity: 0.9;  
opacity: 0.9;  
background-color:#69821E;  
text-align:center;  
}  
  
  
#ifrid p{  
padding:3px;  
margin:0;  
}  
#ifrid input{  
font-size:11px;  
color:#000000;  
font-family:arial;  
padding:3px;  
margin:0px auto;  
}  
#ifrid iframe{  
margin:auto;  
height:80%;  
width:99%;  
overflow:auto;  
}  
/* ##### END IFR ###### */  
  
</style>  
  
<script type="text/javascript">  
// #################################################  
function ifr_control()  
{  
var tag_id    = 'ifrid';                              // WICHTIG, die id des umgebenden Elementes  
var starttag  = '<div id="'+tag_id+'">';              // Start des umgebenden Tags: div,p,span alles geht  
var endtag    = '</div>';                             // Ende des umgebenden Tags  
var buttontxt = 'close';                              // Text des Schliessen-Buttons  
var ifr_id    = 'xid';                                // Id des Iframes  
var ifr_src   = 'http://de.search.yahoo.com/';                  // Standard URL des iframes  
var ifr_name  = 'ifrname';                            // WICHTIG muss auch target Name im Formular  
var ifr_extra = ' scrolling="auto" frameborder="0"';   // Alles was sonst noch an Attribute sein soll  
  
  
// #### Falls der Layer schon offen ist, wird er nun entfernt aus dem HTML ####  
if(document.getElementById(ifr_id) )  
{  
  document.getElementById(tag_id).innerHTML='';  
  document.getElementById(tag_id).style.display='none';  
  //alert(document.getElementsByTagName('body')[0].innerHTML); // nur zum testen  
  return true;  
}  
  
// #### Falls der Layer nicht offen/vorhanden ist, wird er nun erzeugt ####  
  
// *JS braucht bei langen Strings, im Gegenssatz zu php, einen Backslash wegen mehrzeilenstring.  
var neues = '<p><input onclick="ifr_control();" type="button" value="'+buttontxt+'" /></p>\  
<iframe id="'+ifr_id+'" src="'+ifr_src+'" name="'+ifr_name+'"'+ifr_extra+'></iframe>';  
  
document.getElementById(tag_id).style.display='block';  
document.getElementById(tag_id).innerHTML=neues;  
return true;  
} // ###########  end of js func. #############  
</script>  
  
  
</head>  
<body>  
  
  
<div id="ifrid"></div>  
<div style="margin:200px auto;text-align:center;">  
<form action="http://www.google.com/search" onsubmit="ifr_control();" target="ifrname">  
<input type="text" name="q" value="selfhtml" />  
<input type="submit" value="irgendwas senden" />  
</form>  
</div>  
</body>  
</html>  
  

woran liegts?
Paul

  1. Bevor ich nun die beiden Quelltexte zeige noch ein Wort zum Validator:

    Als erste Fehlermeldung, da hatte ich den html tag noch so: <html>, sagt er mir ich solle doch folgendes verwenden:
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    Ok, dann mache ich das und bekomme dann als Fehlermeldung dazu:

    Line 2, Column 62: there is no attribute "lang".

    Was denn nun, versteh ich nicht.

    Da ist die Frage, warum verwendest du einen DOCTYPE dessen Auswirkungen du nicht verstehst? Es gibt durchaus noch andere HTML Varianten ausser XHTML 1.1, dass soweit ich hier die Diskussionen in Erinnerung habe, (noch) nicht empfehlenswert ist. Ansonsten schau einfach in die Spezifikation was du tun musst damit deine Dokument gültig ist.

    Na gut wie dem auch sei hier nun die Quelltexte:

    ...

    woran liegts?

    Schöner langer Quellcode, aber was ist willst du konkret Wissen?

    Struppi.

    1. Hi,

      Da ist die Frage, warum verwendest du einen DOCTYPE dessen Auswirkungen du nicht verstehst? Es gibt durchaus noch andere HTML Varianten ausser XHTML 1.1, dass soweit ich hier die Diskussionen in Erinnerung habe, (noch) nicht empfehlenswert ist.

      wenn du das sagst......

      Schöner langer Quellcode, aber was ist willst du konkret Wissen?

      Hättest du mein Posting gelesen, anstatt ein Haar in der Suppe zu suchen, wüsstest du das.

      Paul

      1. Schöner langer Quellcode, aber was ist willst du konkret Wissen?

        Hättest du mein Posting gelesen, anstatt ein Haar in der Suppe zu suchen, wüsstest du das.

        Deine Code bestand aus über 200 Zeilen Code, hälst du es wirklich für selbstverständlich, dass man das liest um dir zu helfen?
        Na danke, such dir 'n anderen Blöden, ich klink mich hier aus.

        Struppi.

        1. Deine Code bestand aus über 200 Zeilen Code, hälst du es wirklich für selbstverständlich, dass man das liest um dir zu helfen?

          LOL, typisch. Die Problemschilderung ist gerade mal ein Satz. Und um das Problem nachzuvollziehen musste ich den gesamten Quelltext, was übrigens 2 sind und jeweils ca. 100 Zeilen Code hat, posten. Denn sonst hätte ich hier garantiert zur Antwort bekommen, Hilfe nicht möglich wegen nicht kompletten Code. Im Übrigen mögen es 100 Zeilen sein, aber anders geschrieben, wären es vielleicht gerade mal 20 Zeilen.

          Na danke, such dir 'n anderen Blöden, ich klink mich hier aus.

          Hatte auch gar nicht erwartet, das du helfen willst/kannst.

          Paul

          1. Hi,

            LOL, typisch. Die Problemschilderung ist gerade mal ein Satz.

            Ja, sowas ist *leider* "typisch" - fuer viele Fragen, die man hier liest.

            Deine Problembeschreibung war uebrigens sinngemaesz "funzt nich" - das sowas hier nicht reicht, hast du bereits in den Tipps fuer Fragende nachgelesen.

            Und um das Problem nachzuvollziehen musste ich den gesamten Quelltext, was übrigens 2 sind und jeweils ca. 100 Zeilen Code hat, posten.

            Und ueber den einen hast du drueber geschrieben,

            ######## 1. So funktioniert es leider nicht #####################

            und ueber den anderen,

            uns so funktioniert es zwar, aber.....

            Abgesehen vom "funzt nich" erklaerst du uns auch dein "aber" nicht.

            Denn sonst hätte ich hier garantiert zur Antwort bekommen, Hilfe nicht möglich wegen nicht kompletten Code.

            Hilfe ist nicht moeglich, wegen der miserablen Problembeschreibung.

            Hatte auch gar nicht erwartet, das du helfen willst/kannst.

            Selbst wenn ich's koennte (was ich so derzeit nicht sagen kann), wollte ich derzeit auch nicht. Wenn du nicht bereit bist, ein wenig mehr Vorarbeit zu leisten, als unter "funzt nich" ein paar Quellcodezeilen hier abzukippen, dann verdient dein Problem eigentlich nicht mal so viel Beschaeftigung damit, wie Struppi und ich bis jetzt darauf verwendet haben.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Hi,

              LOL, typisch. Die Problemschilderung ist gerade mal ein Satz.

              Ja, sowas ist *leider* "typisch" - fuer viele Fragen, die man hier liest.

              Wenn ein Frage so unmissverstndlich ist, reicht auch ein Satz.

              Deine Problembeschreibung war uebrigens sinngemaesz "funzt nich" - das sowas hier nicht reicht, hast du bereits in den Tipps fuer Fragende nachgelesen.

              Sind hier alle blind?

              Genau das folgende habe ich geschrieben:

              Nun habe ich eine Version die zwar funktioniert, hierbei verwende ich display none/block. Eigentlich hatte ich mir das aber anders gedacht, das Element sollte zur Laufzeit generiert werden und danach auch wieder entfernt werden. Nur bei dieser Variante spielt mein Formular nicht mehr mit, es sendet anscheinend nichts.

              uns so funktioniert es zwar, aber.....

              Abgesehen vom "funzt nich" erklaerst du uns auch dein "aber" nicht.

              soso, siehe oben!

              Denn sonst hätte ich hier garantiert zur Antwort bekommen, Hilfe nicht möglich wegen nicht kompletten Code.

              Hilfe ist nicht moeglich, wegen der miserablen Problembeschreibung.

              Klar, einn Blick auf den Satz und dann auf die Stichworte display und Laufzeit erzeugen, käme man zu den Unterschieden in dem Javascript.

              Hatte auch gar nicht erwartet, das du helfen willst/kannst.

              Selbst wenn ich's koennte (was ich so derzeit nicht sagen kann), wollte ich derzeit auch nicht. Wenn du nicht bereit bist, ein wenig mehr Vorarbeit zu leisten, als unter "funzt nich" ein paar Quellcodezeilen hier abzukippen, dann verdient dein Problem eigentlich nicht mal so viel Beschaeftigung damit, wie Struppi und ich bis jetzt darauf verwendet haben.

              Ich brings mal auf den Punkt, die Bereitschaft wirklich helfen zu wollen, würde mit dem Lesen der Frage beginnen, aber anscheinend gehts hier nur um Divengehabe.

              Paul

              1. Hi,

                Nun habe ich eine Version die zwar funktioniert, hierbei verwende ich display none/block. Eigentlich hatte ich mir das aber anders gedacht, das Element sollte zur Laufzeit generiert werden und danach auch wieder entfernt werden.

                Beispielsweise der Code, der den Code fuer's Iframe dynamisch zusammensetzt, war in *beiden* Beispielen enthalten.
                Ich persoenlich habe keine Lust, mich da jetzt durchzuwuehlen, in welchem Script er dann auch dynamisch ins Dokument eingefuegt wird, und in welchem nicht.

                Klar, einn Blick auf den Satz und dann auf die Stichworte display und Laufzeit erzeugen, käme man zu den Unterschieden in dem Javascript.

                Es ist deine Aufgabe, auf's wesentliche reduzierte Testfaelle zur Verfuegung zu stellen. Wenn du dazu keine Lust hast - mir egal, es ist nicht mein Problem.

                Ich brings mal auf den Punkt, die Bereitschaft wirklich helfen zu wollen, würde mit dem Lesen der Frage beginnen

                Die Bereitschaft, sich helfen zu lassen, wuerde damit beginnen, das Problem so klar wie moeglich, dabei aber auch so reduziert wie moeglich darzustellen.
                Kaum jemand duerfte Lust haben, sich erst mal durch deine Scripte zu wuseln, um herauszufinden, was die wo machen, noch dazu, wenn sie zu grossen Teilen Code enthalten, dessen Erzeugnisse dann doch nicht benutzt werden.

                aber anscheinend gehts hier nur um Divengehabe.

                Wenn du nach mehrfachem Hinweis nicht einsehen willst, dass wir von dir, wenn du schon nicht in der Lage bist, dein Problem selbststaendig zu analysieren ("sendet _anscheinend_ nichts ..."), wenigstens erwarten wuerden, dass du etwas mehr Vorarbeit leistest, in dem du das Problem so weit wie moeglich isolierst und es potentiellen Helfern so einfach wie moeglich machst - dann bist du wohl eher die Diva.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. mecker mecker mecker, aber kein Wort dazu das deine Aussage "nur funzt nicht" falsch war.

                  Davon abgesehen gibts an dem doch so langen endlosen Quelltext den alle stören, nicht viel zu sehen. Mein Gedanke war, das ihr die mal schnell ausprobiert und dann wäre die Sachlage eh klar, abver sowas kann man hier wohl nicht erwarten.

                  Paul

                  1. Hi,

                    Davon abgesehen gibts an dem doch so langen endlosen Quelltext den alle stören, nicht viel zu sehen. Mein Gedanke war, das ihr die mal schnell ausprobiert und dann wäre die Sachlage eh klar,

                    Tja, da kommt dann noch hinzu, dass dummerweise beide Varianten bei meinem Test sowohl im Opera 9.62 als auch im IE 7 funktionieren ...

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“
                    1. Davon abgesehen gibts an dem doch so langen endlosen Quelltext den alle stören, nicht viel zu sehen. Mein Gedanke war, das ihr die mal schnell ausprobiert und dann wäre die Sachlage eh klar,

                      Tja, da kommt dann noch hinzu, dass dummerweise beide Varianten bei meinem Test sowohl im Opera 9.62 als auch im IE 7 funktionieren ...

                      Im FF und IE6 leider nicht. Bzw. lass dich nicht täuschen, weil der Frame angezeigt wird, Grundeinstellung ist yahooo, nach senden müsste es aber Google sein.

                      Danke fürs Testen
                      Paul

              2. Wenn ein Frage so unmissverstndlich ist, reicht auch ein Satz.

                Du drehst dich im Kreis, genau dies hatte ich in meinem Posting gemacht, worauf ich von dir blöd angemacht wurde.

                Sind hier alle blind?

                Genau das folgende habe ich geschrieben:

                Nun habe ich eine Version die zwar funktioniert, hierbei verwende ich display none/block. Eigentlich hatte ich mir das aber anders gedacht, das Element sollte zur Laufzeit generiert werden und danach auch wieder entfernt werden. Nur bei dieser Variante spielt mein Formular nicht mehr mit, es sendet anscheinend nichts.

                Dann zeig uns ein Beispiel wo man konkret dieses Verhalten nachvollziehen, dafür braucht man doch keine 200 Zeilen Code.

                Ich brings mal auf den Punkt, die Bereitschaft wirklich helfen zu wollen, würde mit dem Lesen der Frage beginnen, aber anscheinend gehts hier nur um Divengehabe.

                Ich weiß nicht, was du dir einbildest, was hier passiert. Du bittest in einem Forum um Hilfe - Dir wird verklickert, dass die Art deiner Informationen nicht hilfreich ist - worauf du einen auf beleidigte Leberwurst machst.

                Ich erinner dich mal daran, du möchtest Hilfe bekommen. Das hier ist kein Supportforum. Ich halte es für eine ziemliche Frechheit, sich hier so aufzuplustern und es als Selbstverständlichkeit anzusehen, dass andere sich durch deinen Quellcode quälen um DEINE Problem zu lösen.

                Das magst du als Divenhaft empfinden, aber ich möchte dich sehen wie du reagierst, wenn dich jemand in dem Moment beschimpft, wenn du dein Interesse an anderen Leut Problemen zeigst. Aber Vermutlich kannst du das gar nicht verstehen.

                Struppi.

  2. Variante 1 funktioniert nicht, weil du in dem Moment, wo du innerHTML von body überschreibst, alle Elementobjekte darin aus dem Speicher löscht und durch neue (wenn auch gleiche) ersetzt. Für den Browser bedeutet das, dass das Formular, dessen submit-Handler gefeuert hat und das auf dem Weg war, gleich abgesendet zu werden, nicht mehr da ist. Daher kann es letztlich auch nicht abgesendet werden. Die Event-Verarbeitung wird einfach unterbrochen, weil das betreffende Element gelöscht wurde.

    <script type="text/javascript">

    window.onload = function () {
     document.forms[0].onsubmit = submit;
    };

    function submit () {
     var body = document.body;
     body.innerHTML = body.innerHTML;
    }

    </script>

    <form action="http://www.google.com/search">
    <input type="text" name="q" value="selfhtml" />
    <input type="submit" value="irgendwas senden" />
    </form>

    Dieses Formular wird nicht abgesendet, das hat nix mit iframes oder so zu tun.

    Mathias

    1. Hi,

      Variante 1 funktioniert nicht, weil du in dem Moment, wo du innerHTML von body überschreibst, alle Elementobjekte darin aus dem Speicher löscht und durch neue (wenn auch gleiche) ersetzt. Für den Browser bedeutet das, dass das Formular, dessen submit-Handler gefeuert hat und das auf dem Weg war, gleich abgesendet zu werden, nicht mehr da ist. Daher kann es letztlich auch nicht abgesendet werden. Die Event-Verarbeitung wird einfach unterbrochen, weil das betreffende Element gelöscht wurde.

      das war auch meine Vermutung bei der Sache, aber ich konnte irgendwie nicht richtig glauben, das der ja bereits abgesetzte Aufruf verlorengeht.

      Aber dann wird es wohl so sein. Das bedeutet im Umkehrschluss mir bleibt nur die lästige Möglichkeit mit create.element() usw. zu arbeiten um mein geliebtes inner.HTML zu ersetzen. Aber irgendwie überschreibe/erweitere ich dann ja auch den Bodybereich, allerdings nicht den Formbereich, könnte dann auch wieder das gleiche Problem auftreten?

      Danke
      Paul

      1. Das bedeutet im Umkehrschluss mir bleibt nur die lästige Möglichkeit mit create.element() usw. zu arbeiten um mein geliebtes inner.HTML zu ersetzen.

        Nein, das bedeutet es nicht. Du kannst mit innerHTML arbeiten, solange du nicht das Event-auslösende Element im Event-Handler mit einer innerHTML-Zuweisung löscht - zumindest wird das problematisch, wenn du vom Browser noch erwartest, dass er eine Standardaktion wie das Absenden des Formulares durchführt.

        Aber irgendwie überschreibe/erweitere ich dann ja auch den Bodybereich, allerdings nicht den Formbereich, könnte dann auch wieder das gleiche Problem auftreten?

        Du würdest das body-Element um Kindknoten erweitern, das ist völlig sicher, ob nun mit innerHTML oder createElement und Konsorten. Das Problem tritt nur auf, wenn du den Ast absägst, auf dem du gerade sitzt.

        Mathias

        1. Hi,

          Aber irgendwie überschreibe/erweitere ich dann ja auch den Bodybereich, allerdings nicht den Formbereich, könnte dann auch wieder das gleiche Problem auftreten?

          Du würdest das body-Element um Kindknoten erweitern, das ist völlig sicher, ob nun mit innerHTML oder createElement und Konsorten. Das Problem tritt nur auf, wenn du den Ast absägst, auf dem du gerade sitzt.

          Ich kann doch nicht das body-element um einen Kindknoten erweitern, wenn ich innerHTML nutze, wie soll das gehen? Das ist doch genau das was ich versucht habe und eben nicht möglich ist ohne das Form auch zu erneuern.

          Oder übersehe ich das etwas?

          Danke
          Paul

          1. Ich kann doch nicht das body-element um einen Kindknoten erweitern, wenn ich innerHTML nutze

            Das stimmt. Ich meinte indirekt, indem du ein Unterelement neu mit innerHTML beschreibst, wie du es bereits tust. Es gäbe zwar insertAdjacentHTML für das direkte erweitern, aber das wird nicht browserübergreifend unterstützt.

            Mathias

            1. Hi,

              Ich kann doch nicht das body-element um einen Kindknoten erweitern, wenn ich innerHTML nutze

              Das stimmt.

              Der += Operator existiert.

              MfG ChrisB

              --
              „This is the author's opinion, not necessarily that of Starbucks.“
              1. Ich kann doch nicht das body-element um einen Kindknoten erweitern, wenn ich innerHTML nutze

                Das stimmt.

                Der += Operator existiert.

                Ja gut, aber das macht hinsichtlich der Fragestellung keinen Unterschied. Intern wird bei += neuesHTML nichts anderes gemacht als x.innerHTML = x.innerHTML + neuesHTML. Und dabei tritt eben das besagte Problem auf, dass das Elementobjekt, bei dem das Ereignis passierte, erstmal gelöscht und dann neu angelegt wird. Also Serialisieren, Löschen aller Elemente, Parsen des neuen erweiterten HTML-Codes und Erzeugung aller Elemente vom Neuen.

                Mathias

                1. Hi,

                  Intern wird bei += neuesHTML nichts anderes gemacht als x.innerHTML = x.innerHTML + neuesHTML. Und dabei tritt eben das besagte Problem auf, dass das Elementobjekt, bei dem das Ereignis passierte, erstmal gelöscht und dann neu angelegt wird.

                  OK, ja - stimmt.
                  Na dann halt doch den Iframe einfach irgendwo in ein Nachfahrenelement von body einhaengen, wo das Formular nicht beintraechtigt wird.

                  MfG ChrisB

                  --
                  „This is the author's opinion, not necessarily that of Starbucks.“
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    Ok, dann mache ich das und bekomme dann als Fehlermeldung dazu:

    Line 2, Column 62: there is no attribute "lang".

    Es gibt kein lang-Attribut in XHTML 1.1. Das lang-Attribut ist aus XML-Sicht ein spezifisches HTML-Relikt. Im XML-Universum gibt es das allgemeine, XML-Derivat-übergreifende Attribut lang im globalen XML-Namensraum (Präfix xml), das solche Insellösungen ersetzt. XHTML 1.1 ist als reine XML-Sprache ohne Altlasten und Abwärtskompatibilität gedacht, die nur von Browsern mit fähigen XML-Parsern verarbeitet werden soll, deshalb gibt es dort nur xml:lang.

    Doppelt muss man die beiden nur angeben, wenn man abwärtskompatibles XHTML 1.0 schreibt. Das solltest du auch tun, denn XHTML 1.1 ist nicht auf Kompatibilität mit den bestehenden HTML-Browsern ausgelegt und eignet sich nicht für die Auslieferung mit dem MIME-Typ text/html (die Dateiendung .html führt bei den meisten Webservern zu diesem MIME-Typ). Eigentlich wäre für XHTML-1.1-Dokumente der MIME-Typ application/xhtml+xml angebracht, der zu einer Verarbeitung als XML führen würde. Allerdings brächte das viele Änderungen mit sich, die du beachten müsstest, und nicht alle Browser unterstützen diesen Modus überhaupt bzw. gleich gut.

    Schreibe also besser HTML-kompatibles XHTML 1.0, das du als HTML (text/html) an alle Browser sendest.

    http://de.selfhtml.org/html/xhtml/unterschiede.htm
    http://jendryschik.de/wsdev/einfuehrung/xhtml/kompatibilitaetsrichtlinien

    Ellenlange Diskussionen und Elaborate zum Thema hättest du auch im Forumsarchiv gefunden.

    Mathias