Automatischer Zeilenumbruch

murdi

Erfahrenes Mitglied
hallo zusammen,
werde versuchen, mein problem kurz und bündig zu erläutern. bin derzeit am verzweifeln...

die sache sieht wie folgt aus, ich habe ein iframe in das per javascript wie bei web.de text geschrieben wird ( fetter text , kursiver text , grafiken einbinden etc. ), dieser wird wiederum sofort so dargestelt, wie es der anwender wünscht .

beispiel:

so wird es nicht dargstellt: <b>Hallo</b>
so wirds dargestellt: Hallo

wenn ich nun einen zeilenumbruch per enter erzwinge, wird automatisch ein recht großer zeilenabstand in das iframe übernommen ( wesentlich größer als gewünscht , statt einer zeile sind es 2 zeilen ).

meine eigentliche frage: wie ist es mir möglich, den befehl den die entertaste auslöst abzufangen und meine eigene reaktion zu implementieren ?

mfg erik m.
 
hallo Datic,
danke zunächst für deine hilfe. dein hinweis funktioniert aucheinwandfrei nur nich konkret bei meiner anwendung. ich habe ein iframe welches wie folgt definiert ist:

Code:
<IFRAME class="WriteWindow"  width="400" ID="WriteWindow" height="201"></IFRAME>

leider habe ich es nicht geschafft, die tastaturnachrichten für genau dieses iframe abzufangen.

habe mal folgendes probiert:

Code:
<script for="WriteWindow" event="onmousedown()" language="JScript" type="text/jscript">
<!--
 {
  alert(window.event.keyCode);
 }
//-->
</script>

funktioniert wie gesagt auch nicht ( liegt wohl am focus oder so ähnlich ).
hast du vielleicht noch einen weiteren tipp der mich auf die richtige lösung bringt ?

mfg erik
 
Evtl. hilft dir folgender Code ( der minimal angepasst werden müsste an deine Umgebung ) weiter, der bei mir problemlos in einem HTML Editor innerhalb einer Webseite funktioniert:

Code:
document.onkeyup = setzen

var ist = ""
var soll = ""
var result = ""

function setzen()
{
if(window.event.keyCode == 13)
{
if(zielangabe == "0")
{
ist = document.forms[zielangabe].elements[zielangabe].value;
soll = "<br>";
// alert("null")
result = ist + soll;
document.forms[zielangabe].elements[zielangabe].value = result;
return false
}
ist = document.forms[0].elements[zielangabe].value;
soll = "<br>";
// alert("zwei")
result = ist + soll;
document.forms[0].elements[zielangabe].value = result;
}
return false
}


// Umbruch erzwingen Ende
 
mhhh, aber das iframe ist kein element des formulars.
es ist ein eigenes objekt, im prinzip einene temporäre datei die zur laufzeit den text zwischenspeichert.
 
Original geschrieben von murdi
mhhh, aber das iframe ist kein element des formulars.
es ist ein eigenes objekt, im prinzip einene temporäre datei die zur laufzeit den text zwischenspeichert.

Ich nutze in meinem Codeschnipsel keine (Bestandteile) eines Iframes/Frames, ich greife direkt auf eine Textarea zu!


Schaue auch hier:

http://www.typografix.de/templateeditor/texteditor.html


Hinweis die Daten des obigen Links stehen unter Copyright und Nutzung, auch auszugsweise beadarf vorheriger schriftlicher Genehmigung.
(Mißbrauch wird verfolgt!)

 
packe ins Elterndokument(im Quelltext hinter das iFRame) jenes:

Code:
<script type="text/JScript">
<!--
function br()
{
if(nameDesIframes.event.keyCode==13)
    {
    rng = nameDesIframes.document.selection.createRange();
    rng.pasteHTML('<br>');
    nameDesIframes.event.returnValue=false;
    }
}
nameDesIframes.document.onkeypress=br;
//-->
</script>
.....wobei du statt nameDesIframes...den Namen des iFRames einsetzen musst :)


....das fängt die Return-Taste ab und setzt stattdessen ein <br> ein.
 
Zuletzt bearbeitet:
Original geschrieben von fatalus
packe ins Elterndokument(im Quelltext hinter das iFRame) jenes:

Code:
<script type="text/JScript">
<!--
function br()
{
if(nameDesIframes.event.keyCode==13)
    {
    rng = nameDesIframes.document.selection.createRange();
    rng.pasteHTML('<br>');
    nameDesIframes.event.returnValue=false;
    }
}
nameDesIframes.document.onkeypress=br;
//-->
</script>

.....wobei du statt nameDesIframes...den Namen des iFRames einsetzen musst :)


....das fängt die Return-Taste ab und setzt stattdessen ein <br> ein.

Und wie rufe ich die Funktion dann im Iframe auf?
Muss ja auch irgendwie per Onload oder so klappen.

Habe das jetzt in die Datei, die im Iframe dargestellt wird, als auch in die Hauptdatei gelegt und es funktioniert nicht, habe auch noch ein
document.onkeypress = br() eingefügt, aber da macht er auch nichts :(
 
Zuletzt bearbeitet von einem Moderator:
packe ins Elterndokument(im Quelltext hinter das iFRame)


Weiterhin...rng ist eine Variable, die den TextRange des iFrame erfasst...wenn sie bei dir nicht existiert, musst du sie erstellen.
 
Zuletzt bearbeitet:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Desuo WYSIWYG Demo</title>
  <link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript">
  var rng = "";

function br()
{
if(editorWindow.event.keyCode==13)
    {
    rng = editorWindow.document.selection.createRange();
    rng.pasteHTML('<br>');
    editorWindow.event.returnValue=false;
    }
}
editorWindow.document.onkeypress= alert('test');

</script>

</head>
<body>

</body>
</html>

So sieht das jetzt bei mir aus ;), dieses Dokument ist der Iframe. Also das zeigt der IFRame über src. an, der IFrame heisst editorWindow, aber er zeigt nicht ein "test" an wenn ich einen Buchstaben eingebe, obwohl er es doch eigentlich machen müsste oder nciht?
 
Zuletzt bearbeitet von einem Moderator:
Zurück