Einstellung der position der Einfügemarke auf eine leere Knoten innerhalb eines contentEditable-element

Meine Aufgabe ist es, ein text-Cursor erscheint in einem leeren span-Knoten innerhalb einer contentEditable div.

Folgende bereitet mir keine Probleme auf Firefox 3.6:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript" src="js/jquery-1.4.3.min.js">
        </script>
        <style>
            #multiple {
                border: 1px solid #ccc;
                width: 800px;
                min-height: 20px;
                padding: 5px;
                outline: none;
            }
        </style>
        <script>
            $(document).ready(function(){

    var contentEditable = document.getElementById('multiple');
    var lastItem = contentEditable.getElementsByTagName('span').item(2);

                var selectElementText = function(el, win){
                    win = win || window;
                    var doc = win.document, sel, range;
                    if (win.getSelection && doc.createRange) {                    
                        range = doc.createRange();
                        range.selectNodeContents(el);
                        range.collapse(false);
                        sel = win.getSelection();
                        sel.removeAllRanges();
                        sel.addRange(range);
                    }
                    else 
                        if (doc.body.createTextRange) {
                            range = doc.body.createTextRange();
                            range.moveToElementText(el);
                            range.select();
                        }
                }

                contentEditable.focus();
                selectElementText(lastItem);
            });
        </script>
        <title>Range Selection Tasks (Make Me Want to Cry)</title>
    </head>
    <body>
        <div id="multiple" contentEditable="true">
            <span style="color:red">First</span><span style="color:green">Second</span><span style="color:blue"></span>
        </div>
    </body>
</html>

... aber auf Webkit und IE, der Fokus wird auf die vorletzten span. Keine Ahnung, warum. Es funktioniert, wenn ich einen Raum innerhalb der letzten Spanne, dann bekomme ich aber ein ein-Zeichen-Auswahl.

Having said that, es ist akzeptabel, haben Leerzeichen in den letzten Knotens, falls der Cursor ganz am Anfang.

Jede Hilfe bei diesem würde sehr geschätzt werden. Vielen Dank im Voraus.

InformationsquelleAutor Mike | 2010-10-31
Schreibe einen Kommentar