Как переместить позицию каретки в конец текущего слова? - PullRequest
1 голос
/ 02 января 2009

Я использую веб-браузер. Как я могу переместить позицию вставки для execCommand в конец слова, которое в настоящее время выбрано?

Пример:

| <- текущая позиция каретки </p>

Сом | eword -> переместить -> Someword | -> execCommand выполняется после текущего слова

То, что я хочу сделать, это вставить строку без торможения слова. Что происходит сейчас:

Somew | ord -> line

Somew


ог

Что должно произойти:

Somew | ord -> line


Someword

1 Ответ

0 голосов
/ 04 февраля 2009

Это настолько хакерски, что я почти смущен, чтобы опубликовать это, но ... вы можете выполнить "Вставку строки, не разбивая слова", "используя веб-браузер", выполнив что-то вроде

webBrowser1.Url = 
            new Uri("javascript:" +
                "var tr=document.selection.createRange();" +
                "tr.expand('word');" +
                "tr.collapse(false);" +
                // "tr.select();" // Necessary to actually move the caret
                "tr.pasteHTML('<hr>');");

После того, как веб-браузер загрузил документ, которым вы хотите манипулировать, и пользователь выбрал текст, после которого он хотел бы вставить строку. Если вам действительно нужна перемещенная каретка, вам понадобится tr.select() после tr.collapse().

Однако он не использует execCommand, поэтому он может не подходить для ваших целей. Может быть, кто-то еще может найти способ сделать это немного чище ...

...