PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : designMode


PHP_Atze
16.01.2004, 09:50
Hi ich habe ein Problem.
Ich habe per designMode ein Iframe editierbar gemacht . Das funz auch ganz gut, nur jedesmal wenn ich Enter drücke setzt er um den geschrieben Text(wenn dort noch nicht vorhanden) und in die neue Zeile <p></p>. Das ganze wär ja nicht schlimm, wenn dadurch nicht der ganze Text auseinander gerissen würde!

Hat eine eine Idee wie ich das ändern könnte?


Felix Kaiser
17.01.2004, 12:04
Was ist der 'designMode'? JavaScript verfügt über nichts entsprechendes.

theApp
22.01.2004, 10:28
hatte das selbe problem und habs gelöst, indem ich das event beim enter-drücken abgefangen habe

mein editierbares element hat die id="editor"


function fn_keypress() {
if(event.keyCode==13) {
tr=document.selection.createRange().pasteHTML("<br>");
return false;
}
return true;
}
document.all.editor.onkeypress = fn_keypress;


viele Grüße,
theApp

Felix Kaiser
22.01.2004, 14:12
Der Code tut aber nur mit dem Internet Explorer und auf sowas soll man nicht bauen.

PHP_Atze
26.01.2004, 16:28
cool Danke.

P.S: Der DesignMode ist auch nur für den IE..... ;)

theApp
02.02.2004, 16:10
Also, ich hab die Sache bei mir nochmal optimiert:
Um das Problem mit dem Cursor zu lösen (wenn man am Ende des Textes auf Enter drückt macht der curser kein cr, son dern geht eins weiter. dazu die Textrange am Ende nochmal selectieren


function fn_keypress() {
if(event.keyCode==13) {
tr=document.selection.createRange();
tr.pasteHTML("<br>");
tr.select();
return false;
}
return true;
}
document.all.editor.onkeypress = fn_keypress;



ABER:
Nachträglich hat sich mal wieder herausgestellt, dass es doch ganz sinnvoll von den MS-Leuten war, ein <p> statt <br> zu nutzen :-)
zum Beispiel bei späterer Verwendung von Kommandos "indent" oder "OrderedList" o.ä.

Also per css einfach das padding und margin des Absatzes auf 0 stellen.

So hab ichs jetzt gemacht.