|
|
CKEDITOR.plugins.add("sourcelocation", {
|
|
|
init: function (editor) {
|
|
|
var selectText = '';//选中的文字
|
|
|
// var selectRange;//可视化编辑器选中的区域,用于source返回wysiwyg后的定位
|
|
|
//var bookmark;
|
|
|
|
|
|
editor.on("mode", function () {
|
|
|
if (selectText !== '') {
|
|
|
if (editor.mode === "wysiwyg") {
|
|
|
//console.log(bookmark);
|
|
|
//editor.getSelection().selectBookmarks( bookmark).scrollIntoView();
|
|
|
//editor.getSelection().scrollIntoView();
|
|
|
} else {
|
|
|
if (selectText !== "") {
|
|
|
var codemirror = window["codemirror_" + editor.id]; //编辑器的codemirror实例
|
|
|
var find_start = -1;
|
|
|
var find_str = selectText; //需要查找的字符串
|
|
|
for (i = 0; i < codemirror.doc.lastLine(); i++) {
|
|
|
line = codemirror.doc.getLineHandle(i);
|
|
|
find_start = line.text.indexOf(find_str);
|
|
|
if (find_start !== -1) {
|
|
|
line_number = codemirror.doc.getLineNumber(line);
|
|
|
//console.log(find_start,codemirror.doc.getLineNumber(line),line.text);
|
|
|
codemirror.doc.setCursor(line_number + 10); //滚动到稍微远一点的行,选中的文本才可以展示在编辑器中间
|
|
|
codemirror.doc.setSelection(
|
|
|
{ line: line_number, ch: find_start },
|
|
|
{ line: line_number, ch: find_start + find_str.length }
|
|
|
);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
//监控source按钮按下之前的事件,获取当前选中的文字
|
|
|
editor.on('beforeCommandExec', function (event) {
|
|
|
var commandName = event.data.name;
|
|
|
if (commandName == 'source') {
|
|
|
if (editor.mode === "wysiwyg") {
|
|
|
selectText = editor.getSelectedHtml(true);
|
|
|
//selectRange = editor.getSelection().getRanges();
|
|
|
// bookmark = editor.getSelection().createBookmarks();
|
|
|
//console.log(bookmark);
|
|
|
} else {
|
|
|
selectText = window["codemirror_" + editor.id].doc.getSelection();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
});
|