Textarea Zeilenumbruch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Textarea Zeilenumbruch

    Hallo,

    ich habe eine Textarea in meinem XHTML-Dokument mit Zeichensatz iso-8859-1.

    Den Inhalt dieser Area sende ich per Ajax:
    Code:
    save_profile_h.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	save_profile_h.send(parameters);
    an eine PHP-Datei, wo auch alles richtig ankommt. Ich speichere den Inhalt nach bearbeitung mit

    PHP-Code:
    $beschreibung =     mysql_real_escape_string(nl2br(htmlentities(strip_tags($_POST["beschreibung"]), ENT_QUOTES"UTF-8"))); 
    ab.
    In der SQL-Datenbank stehen die Zeilenumbrüche richtig drin.
    Wenn ich den Inhalt des DB-Feldes dann ganz normal in dem XHTML Dokument mit iso-8859-1 als Zeichensatz ausgebe, erscheint auch dort der Umbruch.

    Variante mit IE:

    Lese ich allesdings diesen Wert des Textfeldes aus der DB wieder aus und schicke ihn als Antwort eines Ajax-Requests mit, fehlt der Zeilenumbruch in der Antwort, wenn ich ihn in eine Textarea schreibe.

    Variante mit FF:

    Wenn ich mit dem FF das gleiche wie mit dem IE mache, erzeugt er mir einen Umbruch, aber leider nicht einen, sondern gleich 2.

    Meine Frage: Hat es eventuell irgendwas mit meinen Zeichensätzen zu tun? Wie bekomme ich es hin, dass ich für einen Umbruch auch später einen Umbruch habe? Und ist das unter Linux / Mac dann eventuell nochmal was anderes?

    MfG,
    seggl-hoch-drei
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

  • #2
    Wie Zeilenumbrüche interpretiert werden, ist Betriebssystemabhängig!

    Windows: \r\n
    Linux: \n
    Mac: \r

    Die Funktion nl2br ersetzt \n durch <br />, es sind also zwei Umbrüche (einmal \r und einmal das HTML-br). Der Firefox interpretiert solche weißen Zeichen in XML-Daten, der IE nicht in dem Maße, wie es der FF macht!
    Auf der sicheren Seite bist du, wenn du alle Zeilenumbrüche normierst:
    PHP-Code:
    $input str_replace( array( '\r\n''\r' ), '\n'$input ); 

    Kommentar


    • #3
      danke für den tipp
      hab das jetzt reingemacht, das selbe problem besteht noch immer...

      wenn ich im IE mit einem alert den zurückkommenden text ausgebe, steht da

      "a b" und im FF "a\r\n\r\nb" für die eingabe "a UMBRUCH b".

      Das vom FF ist zwar auch nicht richtig, aber ws wäre mir schon lieber als die tolle Lösung vom IE...

      Wisst ihr, an was es sonst noch liegen könnte?

      EDIT: Ich habs jetzt auch noch mit Opera probiert. Der machts genau gleich wie der FF.
      Es sieht ganz so aus, dass der IE ein Problem mit \r\n\r\n hat...

      Aber wie krieg ich das jetzt auch noch im IE zum laufen?

      EDIT2: Gebe ich in das Textfeld direkt per JS "a\r\nb" aus, schreibt Meister IE auch alles in eine Zeile, getrennt von einem Leerzeichen...
      Zuletzt geändert von Seggl-hoch-drei; 23.10.2007, 20:49.
      Tempim.de - Dein kostenloser Bildhoster
      Tipps und Tricks für Webmaster

      Kommentar


      • #4
        imho reicht für die darstellung im ie auch ein \n zum ersetzen aus.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          hmm
          auch nur mit "\n" geht es nicht.

          Das Problem, dass FF und Opera jeweils 2 Umbrüche gemacht habe, ist jetzt behoben. Ich hab da einen Fehler in meinem Skript gehabt...

          Der Internet Explorer macht aber immernoch den gleichen Sch....
          Tempim.de - Dein kostenloser Bildhoster
          Tipps und Tricks für Webmaster

          Kommentar


          • #6
            So langsam mache ich Fortschritte.

            Ich habe jetzt statt innerHTML innerText zum Beschreiben der Textfelder genommen.

            Internet Explorer macht es jetzt ENDLICH (!!!!) richtig. Opera auch, aber der FF (der eigentlich alles richtig macht), macht es jetzt komplett falsch. Er lässt das Feld einfach leer.

            Meine Frage: Wie beschreibt man Textareas richtig mit ALLEN Browsern?
            Tempim.de - Dein kostenloser Bildhoster
            Tipps und Tricks für Webmaster

            Kommentar


            • #7
              zeig doch mal den js-code oder ein online-beispiel. bei solchen dingen zicken die browser gerne herum.

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                online zu sehen auf
                http://www.virtual-meetings.de/rebuild/
                (Profil editieren), allerdings ist dafür eine Registrierung notwendig...

                Der komplette Code wäre ziemlich viel, hier nur mal die Stelle für die Speicherung in das Textfeld. (Ich hab jetzt ne Browserweiche als Notlösung)

                Code:
                //browserweiche
                var IE = null;
                var FF = null;
                
                if(window.XMLHttpRequest)
                { FF = true; }
                else if(window.ActiveXObject)
                { IE = true; }
                
                for(x = 0; x < textareas.length; x++)
                	{
                		var textfeld = document.getElementById(textareas[x]);		
                		textfeld.innerHTML = "<textarea id='"+textareas[x]+"_edit' class='input_big' rows='6' cols='55'></textarea>";	
                		
                		if(IE) {	
                		document.getElementById(textareas[x]+"_edit").innerText = old_textareas[textareas[x]];	
                		} else {
                		document.getElementById(textareas[x]+"_edit").innerHTML = old_textareas[textareas[x]]; }
                				
                	}
                Oder hier die ganzen JS-Dateien:

                http://www.virtual-meetings.de/rebuild/profil.js (Die wichtigste, in edit_profile() steht der Code zum Einfügen drin...)
                http://www.virtual-meetings.de/rebuild/dyn.js (Ajax)
                http://www.virtual-meetings.de/rebuild/javascript.js (Sonstiges)

                Danke für die Hilfe ;-)
                Tempim.de - Dein kostenloser Bildhoster
                Tipps und Tricks für Webmaster

                Kommentar


                • #9
                  ich glaubs echt nicht
                  kaum geht das eine, geht das andere nicht mehr!
                  die Umlaute werden nichtmehr dargestellt. auch nach html_entitity_decode nicht
                  Tempim.de - Dein kostenloser Bildhoster
                  Tipps und Tricks für Webmaster

                  Kommentar

                  Lädt...
                  X