Я создал плагин для CKEditor, но он полагается на выделенный текст.
В FF и Chrome я могу использовать:
var selectedText = editor.getSelection().getNative();
но это не работает в IE, и я получаю только [object Object]
Любые предложения?
Я создал плагин для CKEditor, но он полагается на выделенный текст.
В FF и Chrome я могу использовать:
var selectedText = editor.getSelection().getNative();
но это не работает в IE, и я получаю только [object Object]
Любые предложения?
Это то, что я использую:
var mySelection = editor.getSelection();
if (CKEDITOR.env.ie) {
mySelection.unlock(true);
selectedText = mySelection.getNative().createRange().text;
} else {
selectedText = mySelection.getNative();
}
Применение:
editor.getSelection().getSelectedText();
Или:
CKEDITOR.instances["txtTexto"].getSelection().getSelectedText()
"txtTexto" = идентификатор тега textarea
@TheApprentice
Вы говорите так:
( function(){
var getSelectedText = function(editor) {
var selectedText = '';
var selection = editor.getSelection();
if (selection.getType() == CKEDITOR.SELECTION_TEXT) {
if (CKEDITOR.env.ie) {
selection.unlock(true);
selectedText = selection.getNative().createRange().text;
} else {
selectedText = selection.getNative();
}
}
return(selectedText);
}
...
с таким вызовом:
onShow: function() {
// Get the element currently selected by the user
var editor = this.getParentEditor();
var selectedContent = getSelectedText(editor);
Для тех, кто хочет заполнить поля с помощью выделения, просто сделайте это так и убедитесь в долгом путешествии.
onShow: function() {
this.setValueOf( 'tab-id', 'field-id', editor.getSelection().getSelectedText().toString() );
},
Приятного дня!
В более новых версиях CKEDITOR, похоже, есть более простой способ:
var selectedHTML = editor
.getSelectedHtml()
.getHtml(); //result: <p>test</p>