Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Курсор в designMode (https://javascript.ru/forum/dom-window/10632-kursor-v-designmode.html)

tito_spades 13.07.2010 13:07

Курсор в designMode
 
Здравствуйте. Есть iframe в режиме desingMide = 'on'. Есть кнопка, при нажатии на нее в iframe вставляется текст. После вставки курсор всегда становится в начало iframe. как можно сделать так чтобы он оставался в конце вставленного текста? Как его вообще можно позиционировать курсор в этом режиме. Я понял уже что нужно это реализовывать с помощью Range, только как? Я пробовал выбирать текст в ноде и сворачивать все к конечной точке, добился только того что курсор начал после вставки перескакивать в самый конец iframe'a. Набросал небольшой тестовый пример для наглядности. Спасибо.

<html>
    <head>
        <title>Expl</title>    
        <script type = "text/javascript">
            function initDesign() {
                var iFrame = document.getElementById("content");
                var iDoc = iFrame.contentDocument;
                iDoc.designMode = 'on';
            }
            function pasteText() {
                var iFrame = document.getElementById("content");
                var iDoc = iFrame.contentDocument;
                iDoc.body.innerHTML += "Checking";
                iFrame.focus();
            }
        </script>
    </head>
    <body onload = "initDesign()">
        <button id = "button" onclick = "pasteText()">Paste Text</button>
        <br />
        <iframe id = "content">
        </iframe>
    </body>
</html>

Octane 13.07.2010 16:28

Курсор (каретка) рассматривается, как схлопнутое выделение.

Ставите начало и конец Range в одну точку в нужном месте (http://fastcoder.org/articles/?aid=609) и выделяете его:
var sel = getSelection();
sel.removeAllRanges();
sel.addRange(range);


iFrame.focus() сбрасывает выделение в некоторых браузерах.


Часовой пояс GMT +3, время: 09:40.