我为CKEditor创建了一个插件,但它依赖于当前选择的文本。
在FF和Chrome中我可以使用:
var selectedText = editor.getSelection().getNative();
但这在IE中不起作用,我只得到[object Object]
有什么建议吗?
答案 0 :(得分:21)
这就是我使用的:
var mySelection = editor.getSelection();
if (CKEDITOR.env.ie) {
mySelection.unlock(true);
selectedText = mySelection.getNative().createRange().text;
} else {
selectedText = mySelection.getNative();
}
答案 1 :(得分:17)
使用:强>
editor.getSelection().getSelectedText();
或强>
CKEDITOR.instances["txtTexto"].getSelection().getSelectedText()
“txtTexto”= textarea标签的ID
答案 2 :(得分:3)
对于那些想要用选择来填充字段的人来说,就这样做,并确保自己长途跋涉。
onShow: function() {
this.setValueOf( 'tab-id', 'field-id', editor.getSelection().getSelectedText().toString() );
},
度过美好的一天!
答案 3 :(得分:2)
@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);
答案 4 :(得分:0)
在较新版本的CKEDITOR中,似乎有一种更简单的方法:
var selectedHTML = editor
.getSelectedHtml()
.getHtml(); //result: <p>test</p>