contenteditable im FF nur bedingt editierbar
uzahnd
- javascript
0 MudGuard
Hi
wenn ich im FF (benutze 3.6.12/Ubuntu) sämtliche ChildNodes eines editierbaren Spans auswähle, lassen die sich nicht editieren. Das geht nur, wenn ich eins weniger als alle auswähle; das letzte KindElement (also normalerweise der letzte Buchstabe) lässt sich zudem nur mit Backspace, nicht aber mit Delete löschen.
In Chromium geht das problemlos. Ist dieses FF-Verhalten gewollt oder ein Bug?
Minimalbeispiel:
<html>
<head>
<title>Ed-Test</title>
</head>
<body>
<p>
<span id="editor" contenteditable="true">
blabla
</span>
</p>
<script type="text/javascript">
var elm = document.getElementById('editor');
var sel = window.getSelection();
var ran = document.createRange();
/* Variante eins via Range-Objekt */
ran.selectNodeContents(elm);
sel.removeAllRanges();
sel.addRange(ran);
/* Variante zwei via selectionRange-Objekt
sel.selectAllChildren(elm); */
elm.focus();
</script>
</body>
</html>
Als Workaround besteht die Möglichkeit, statt des spans ein div zu nehmen und den per css inline darstellen zu lassen. Die span-Version fänd ich allerdings 'sauberer'...
danke für jegliche Anregung,
gruss u
Hi,
das letzte KindElement (also normalerweise der letzte Buchstabe)
Hm. Hast Du den letzten Buchstaben einzeln in ein Element eingepackt?
Weil normalerweise zusammenhängende Texte als ein TextNode *) betrachtet werden, nicht einzelne Buchstaben. lastChild ist also eher nicht der letzte Buchstabe.
*) bei sehr langen Texten werden ggf. mehrere TextNodes draus gemacht.
cu,
Andreas