报告类型
在 chrome 78.0.3904.97 中使用 CKEditor 添加的链接会出现以下错误,我也检查了最新的 firefox,我可以重现这个
link.js?t=J8Q8:27 Uncaught TypeError: Cannot read property 'length' of undefined
at CKEDITOR.dialog.onOk (link.js?t=J8Q8:27)
at CKEDITOR.dialog.<anonymous> (ckeditor.js:613)
at CKEDITOR.dialog.l (ckeditor.js:10)
at CKEDITOR.dialog.fire (ckeditor.js:12)
at button.onClick (ckeditor.js:637)
at button.<anonymous> (ckeditor.js:575)
at button.l (ckeditor.js:10)
at button.fire (ckeditor.js:12)
at button.click (ckeditor.js:574)
at CKEDITOR.dom.element.<anonymous> (ckeditor.js:566)
繁殖步骤
- 启用 CKeditor 的链接
- 单击ckeditor工具栏中的链接图标
- 它会打开一个对话框以添加显示名称和链接
- 添加链接和显示名称
- 点击确定
预期结果
关闭对话框并将链接添加到 ckeditor 文本区域
实际结果
对话框没有关闭,控制台给出
link.js?t=J8Q8:27 Uncaught TypeError: Cannot read property 'length' of undefined
at CKEDITOR.dialog.onOk (link.js?t=J8Q8:27)
at CKEDITOR.dialog.<anonymous> (ckeditor.js:613)
at CKEDITOR.dialog.l (ckeditor.js:10)
at CKEDITOR.dialog.fire (ckeditor.js:12)
at button.onClick (ckeditor.js:637)
at button.<anonymous> (ckeditor.js:575)
at button.l (ckeditor.js:10)
at button.fire (ckeditor.js:12)
at button.click (ckeditor.js:574)
at CKEDITOR.dom.element.<anonymous> (ckeditor.js:566)
其他详情
- 浏览器:chrome 78.0.3904.97 / firefox
- 操作系统:Mac
- CKEditor 版本:4.13.0
- 安装的 CKEditor 插件:
使用 CKEditor 作为 Emberjs 组件
组件/ckeditor.js
import Ember from 'ember';
import config from 'project/config/environment';
export default Ember.Component.extend( {
allowLinks: true,
didInsertElement: function() {
var self = this,
$textarea = this.$().find( 'textarea' )[0],
ckconfig = {
toolbarGroups: [
{ name: 'styles' },
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list' ] },
{ name: 'others' },
{ name: 'clipboard', groups: [ 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection' ] },
{ name: 'colors' }
],
removeButtons: 'Subscript,Superscript,Cut,Copy,Paste,PasteText,PasteFromWord,Anchor,Styles,Font,FontSize,Find,Replace,SelectAll,BGColor',
format_tags: 'h1;p',
removeDialogTabs: 'link:advanced;link:target',
removePlugins: 'magicline',
disallowedContent : {
'$1': {
styles: 'color'
}
}
},
outputRules = {
indent: false,
breakBeforeOpen: false,
breakAfterOpen: false,
breakBeforeClose: false,
breakAfterClose: false
};
// custom config
if ( this.get( 'allowLinks' ) ) ckconfig.toolbarGroups.splice( 3, 0, { name: 'links' } );
CKEDITOR.config.customConfig = false;
CKEDITOR.config.defaultLanguage = 'en';
CKEDITOR.config.language = 'en';
CKEDITOR.config.contentsCss = config.baseURL + 'ckeditor.css' ;
CKEDITOR.config.height = 420;
CKEDITOR.config.skin = 'bootstrapck,' + config.baseURL + 'assets/bootstrapck/';
CKEDITOR.config.colorButton_colors = '0000FF,FFA500';
CKEDITOR.config.colorButton_enableMore = false;
CKEDITOR.on( 'instanceReady', function(e) {
e.editor.dataProcessor.writer.setRules( 'h1', outputRules );
e.editor.dataProcessor.writer.setRules( 'p', outputRules );
e.editor.dataProcessor.writer.setRules( 'ol', outputRules );
e.editor.dataProcessor.writer.setRules( 'ul', outputRules );
e.editor.dataProcessor.writer.setRules( 'li', outputRules );
} );
CKEDITOR.on( 'dialogDefinition', function(e) {
var dialogName = e.data.name,
dialogDefinition = e.data.definition;
if ( dialogName === 'link' ) {
dialogDefinition.onShow = function () {
var dialog = CKEDITOR.dialog.getCurrent(),
linkType = dialog.getContentElement( 'info' , 'linkType' ),
anchorOptions = dialog.getContentElement( 'info' , 'anchorOptions' ),
emailOptions = dialog.getContentElement( 'info' , 'emailOptions' ),
protocol = dialog.getContentElement( 'info' , 'protocol' );
linkType.getElement().hide();
anchorOptions.getElement().hide();
emailOptions.getElement().hide();
protocol.disable();
};
}
} );
Ember.run( function() {
$textarea.value = self.get( 'value' ) || '';
CKEDITOR.replace( $textarea, ckconfig ).on( 'change', function(e) {
self.set( 'value', e.editor.getData() );
} );
} );
}
} );
有人知道我该如何解决吗?我也检查了他们的 github 问题,但不幸的是我找不到任何东西