跳到主要内容

迁移至新版本

1.2 -> 2.0

属性迁移

旧版属性替代方案说明
customStats(已移除)新版本 2.0 中不再可用
toolbarBlockstoolbar现支持详细的工具栏结构
defaultStylesdefaultStyles(已更新)结构现为按块和基于 CSS
modelayoutMode已替换为更严格的枚举设置

- customStats

customStats 属性已被移除。当前版本的 RichText 不再支持显示用户自定义的统计信息(例如字符数、单词数、句子数)。

如果您仍需计算文本指标,可以通过访问编辑器内容并手动处理来在外部实现:

const content = editor.getValue();
const wordCount = content.split(/\s+/).length;

- toolbarBlockstoolbar

2.0 之前,用户只能指定包含控件的块

Before 2.0
new dhx.RichText("#root", {
toolbarBlocks: ["undo", "style", "decoration", "colors", "align", "link"]
});

2.0 起,用户可以指定单独的控件

From 2.0
new richtext.Richtext("#root", {
toolbar: [
"undo", "style", "bold", "italic", "underline", "text-color",
"align", "link"
]
});

- defaultStyles

2.0 之前,用户可以为工具栏选择控件定义默认值

Before 2.0
defaultStyles: {
"font-family": "Tahoma",
"font-size": "14px"
}

2.0 起,用户可以为特定块类型指定默认样式值

From 2.0
defaultStyles: {
"*": {
"font-family": "Tahoma",
"font-size": "14px"
},
h1: {
"font-size": "32px",
"color": "#333"
}
}
注意

使用 * 为所有块定义基础默认值,然后为特定元素(p、h1、blockquote 等)进行覆盖。

- modelayoutMode

Before 2.0
new dhx.RichText("#root", {
mode: "document"
});
From 2.0
new Richtext("#root", {
layoutMode: "document" // 或 "classic"
});

新的 layoutMode 严格支持 "classic""document" 两个值。

方法迁移

旧版方法新版等效方法说明
getValue(mode)getValue(encoder)编码器替代字符串模式;编码器需单独导入
setValue(value, mode)setValue(value, encoder)编码器替代字符串模式;编码器需单独导入
getStats()已移除无替代方案;需手动实现逻辑
getEditorAPI()已移除内部接口;请使用公共 API
fire()已移除已由 exec()intercept() 替代
on()detach()✅ 已保留(api.onapi.detach现通过 richtext.api 访问
fullScreen()已移除使用 fullscreenMode 配置属性
exitFullScreen()已移除使用 fullscreenMode 配置属性
paint()已移除不再需要
destructor()✅ 仍可用无变化
setConfig()✅ 新增支持实时配置更新
setLocale()✅ 新增支持动态切换语言
getReactiveState()✅ 新增支持响应式状态追踪
getState()✅ 新增提供当前静态配置状态
intercept()✅ 新增拦截内部操作
exec()✅ 新增执行内部操作

- setValue() / getValue()

Before 2.0
...
editor.setValue("<p>Hello</p>", "html");
editor.getValue("text");
From 2.0
const fromTextEncoder = richtext.text.fromText; 
const fromHTMLEncoder = richtext.html.fromHTML;

const toTextEncoder = richtext.text.toText;
const toHTMLEncoder = richtext.html.toHTML;
...
editor.setValue("<p>Hello</p>", fromHTMLEncoder);
editor.getValue(toTextEncoder);
注意

您仍然可以不带编码器调用 getValue()setValue()——默认使用 HTML 格式

- on / detach

Before 2.0
editor.events.on("Change", function(action, canUndo, canRedo){
// 你的代码
});

editor.events.detach("Change");
From 2.0
editor.api.on("set-font-size", (obj) => {
console.log(obj.fontSize);
}, { tag: "track" });

editor.api.detach("track");

- fire() → 使用 exec()intercept()

Before 2.0
editor.events.fire("some-event", [data]);
From 2.0
editor.api.exec("some-event", obj);

// 阻止执行
editor.api.intercept("some-event", (obj) => false);