开发者

how to select a text range in CKEDITOR programatically?

开发者 https://www.devze.com 2023-01-29 23:46 出处:网络
Problem: I have a CKEditor instance in my javascript: var editor = CKEDITOR.instances[\"id_corpo\"]; and I need to insert some text programatically, and select some text range afterwards.

Problem:

I have a CKEditor instance in my javascript:

var editor = CKEDITOR.instances["id_corpo"];

and I need to insert some text programatically, and select some text range afterwards.

I already did insert text through

editor.insertHtml('<h1 id="myheader">This is a foobar header</h1>');

But I need to select (highlight) the word "foobar", program开发者_如何学Pythonatically through javascript, so that I can use selenium to work out some functional tests with my CKEditor plugins.

UPDATE 1:

I've also tried something like

var selection = editor.getSelection();
var childs = editor.document.getElementsByTag("p");
selection.selectElement(childs);

But doesn't work at all!

How can I do that?

I think that

selection.selectRange()

could do the job, but I'could not figure out how to use it. There are no examples over there :(


Get current selection

var editor = CKEDITOR.instances["id_corpo"];
var sel = editor.getSelection();

Change the selection to the current element

var element = sel.getStartElement();
sel.selectElement(element);

Move the range to the text you would like to select

var findString = 'foobar';
var ranges = editor.getSelection().getRanges();
var startIndex = element.getHtml().indexOf(findString);
if (startIndex != -1) {
    ranges[0].setStart(element.getFirst(), startIndex);
    ranges[0].setEnd(element.getFirst(), startIndex + findString.length);
    sel.selectRanges([ranges[0]]);
}


You can also do the following:

get the current selection

var selection = editor.getSelection();
var selectedElement = selection.getSelectedElement();

if nothing is selected then create a new paragraph element

if (!selectedElement)
    selectedElement = new CKEDITOR.dom.element('p');

Insert your content into the element

selectedElement.setHtml(someHtml);

If needed, insert your element into the DOM (it will be inserted into the current position)

editor.insertElement(selectedElement);

and then just select it

selection.selectElement(selectedElement);


Check out the selectElement() method of CKEDITOR.dom.selection.

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.selection.html


insert text at cursor point in ck editor

  • function insertVar(myValue) { CKEDITOR.instances['editor1'].fire( 'insertText',myValue); }

    this is working for me

0

精彩评论

暂无评论...
验证码 换一张
取 消