使用 npm 或 yarn 安装 CKEditor 5
npm install @ckeditor/ckeditor5-build-classic
# 或者
yarn add @ckeditor/ckeditor5-build-classic
在 HTML 文件中引入 CKEditor 并初始化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My CKEditor Example</title>
<script src="https://cdn.ckeditor.com/ckeditor5/34.0.0/classic/ckeditor.js"></script>
</head>
<body>
<h1>My CKEditor Example</h1>
<textarea name="content" id="editor"></textarea>
<script>
ClassicEditor
.create(document.querySelector('#editor'))
.catch(error => {
console.error(error);
});
</script>
</body>
</html>
ClassicEditor.create(element, config)
描述: 创建一个 CKEditor 实例并设置配置项。
参数:
element
: DOM 元素,选择器或元素节点。config
(可选): 一个对象,包含配置选项。示例:
ClassicEditor
.create(document.querySelector('#editor'), {
toolbar: ['bold', 'italic', 'link']
})
.catch(error => {
console.error(error);
});
editor.setData(data)
描述: 设置编辑器的内容。
参数:
data
: 字符串,包含要设置的内容。示例:
editor.setData('<p>This is the new content!</p>');
editor.getData()
描述: 获取编辑器的内容。
参数: 无
示例:
let content = editor.getData();
console.log(content); // 输出当前编辑器内容
editor.destroy()
描述: 销毁编辑器实例。
参数: 无
示例:
editor.destroy()
.then(() => {
console.log('Editor was destroyed');
})
.catch(error => {
console.error(error);
});
editor.on(event, callback)
描述: 为编辑器注册事件监听器。
参数:
event
: 字符串,事件名称,如 change
, blur
, focus
等。callback
: 函数,当事件触发时调用。示例:
editor.on('change', (event, editor) => {
console.log('Content changed:', editor.getData());
});
editor.execute(command, options)
描述: 执行编辑器命令。
参数:
command
: 字符串,命令名称,如 bold
, italic
, link
等。options
(可选): 命令所需的选项。示例:
editor.execute('bold');
editor.isReadOnly
描述: 获取或设置编辑器的只读状态。
示例:
// 设置为只读模式
editor.isReadOnly = true;
// 获取当前只读状态
let isReadOnly = editor.isReadOnly;
console.log(isReadOnly);
editor.model.change(callback)
描述: 在模型改变时执行操作,确保模型状态一致。
参数:
callback
: 函数,在模型改变时调用。示例:
editor.model.change(writer => {
const root = editor.model.document.getRoot();
writer.insertText('Hello CKEditor!', root, 0);
});
editor.ui.view.editable.element
描述: 获取编辑器可编辑区域的 DOM 元素。
示例:
let editableElement = editor.ui.view.editable.element;
console.log(editableElement);
自定义插件: CKEditor 允许开发者创建和集成自定义插件,以扩展编辑器的功能。
示例:
// 创建自定义插件
class MyCustomPlugin {
constructor(editor) {
this.editor = editor;
}
init() {
const editor = this.editor;
// 添加自定义按钮
editor.ui.componentFactory.add('myButton', locale => {
const view = new editor.ui.view.ButtonView(locale);
view.set({
label: 'My Button',
withText: true,
tooltip: true
});
// 添加按钮点击事件
view.on('execute', () => {
editor.model.change(writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText('Hello from My Button!', insertPosition);
});
});
return view;
});
}
}
// 使用自定义插件
ClassicEditor
.create(document.querySelector('#editor'), {
plugins: [MyCustomPlugin, ...ClassicEditor.builtinPlugins],
toolbar: ['myButton', ...ClassicEditor.defaultConfig.toolbar.items]
})
.catch(error => {
console.error(error);
});