diff --git a/src/Cherry.config.js b/src/Cherry.config.js index 412ec215..da1f160d 100644 --- a/src/Cherry.config.js +++ b/src/Cherry.config.js @@ -489,6 +489,7 @@ const defaultConfig = { focus: ({ e, cherry }) => {}, blur: ({ e, cherry }) => {}, selectionChange: ({ selections, lastSelections, info }) => {}, + afterChangeLocale: (locale) => {}, }, previewer: { dom: false, diff --git a/src/Cherry.js b/src/Cherry.js index ef94b2ca..31ec5f86 100644 --- a/src/Cherry.js +++ b/src/Cherry.js @@ -251,7 +251,7 @@ export default class Cherry extends CherryStatic { on(eventName, callback) { if (this.$event.Events[eventName]) { - if (/afterInit|afterChange/.test(eventName)) { + if (/^(afterInit|afterChange)$/.test(eventName)) { // 做特殊处理 return this.$event.on(eventName, (msg) => { callback(msg.markdownText, msg.html); diff --git a/src/Event.js b/src/Event.js index 618d81c8..2a0281de 100644 --- a/src/Event.js +++ b/src/Event.js @@ -39,6 +39,7 @@ export default class Event { focus: 'focus', // 焦点 blur: 'blur', // 失焦 selectionChange: 'selectionChange', // 选区内容改变时触发 + afterChangeLocale: 'afterChangeLocale', // 语言改变 }; /** @@ -96,6 +97,11 @@ export default class Event { options.event.selectionChange(event); }); } + if (options.event.afterChangeLocale) { + this.on(this.Events.afterChangeLocale, (locale) => { + options.event.afterChangeLocale(locale); + }); + } } /** diff --git a/src/toolbars/hooks/ChangeLocale.js b/src/toolbars/hooks/ChangeLocale.js index 9ff26c68..c176da37 100644 --- a/src/toolbars/hooks/ChangeLocale.js +++ b/src/toolbars/hooks/ChangeLocale.js @@ -54,6 +54,7 @@ export default class ChangeLocale extends MenuBase { if (!this.$cherry.locales[shortKey]) { return; } + this.$cherry.$event.emit('afterChangeLocale', shortKey); this.$cherry.options.locale = shortKey; this.$cherry.locale = this.$cherry.locales[shortKey]; this.$cherry.resetToolbar('toolbar', this.$cherry.options.toolbars.toolbar || []); diff --git a/types/cherry.d.ts b/types/cherry.d.ts index b29d0371..6d2741c9 100644 --- a/types/cherry.d.ts +++ b/types/cherry.d.ts @@ -90,7 +90,10 @@ export interface _CherryOptions void; + /** 变更语言时触发 */ + afterChangeLocale?: ( locale: string ) => void; }; /** 预览区域配置 */ previewer: CherryPreviewerOptions;