我正在尝试将上传的图片嵌入到编辑器中。我的filebrowserUploadUrl
是/api/m/image
,似乎工作正常。单击Send it to the Server
按钮后,出现以下脚本错误:
image.js?t=H4PG:19 Uncaught TypeError: Cannot read property 'setCustomData'
of undefined
at textInput.onChange (image.js?t=H4PG:19)
at textInput.n (ckeditor.js:10)
at textInput.CKEDITOR.event.CKEDITOR.event.fire (ckeditor.js:12)
at textInput.setValue (ckeditor.js:619)
at textInput.setValue (ckeditor.js:545)
at a.q (ckeditor.js:841)
at ckeditor.js:31
at Object.callFunction (ckeditor.js:31)
at image?CKEditor=editor&CKEditorFuncNum=1&langCode=en:1
上面的最后一行是对filebrowserUploadUrl
的调用,其响应是:
window.parent.CKEDITOR.tools.callFunction(1,'/ images / bulletins.jpg','Uploaded successfully');
Uploaded successfully
消息显示在警报中。 Image Info
选项卡下的预览框未更新。但是,如果我单击“确定”关闭对话框,图像(bulletins.jpg)就会嵌入到编辑器中。
可能导致错误的原因是什么?如何解决?
我找到了导致它的原因。我想在插入图像对话框启动到“上载”选项卡时设置默认选项卡。我使用以下代码:
CKEDITOR.on("dialogDefinition", function(ev) {
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if (dialogName === "image") {
dialogDefinition.onShow = function() {
this.selectPage("Upload");
}
}
});
使用上述代码时,上传文件时会发生错误。
答案 0 :(得分:1)
我遇到了同样的问题,在使用vikram提出的解决方案后,编辑器在将图像链接粘贴到文本时产生错误。这里更好的方法,不是完全覆盖默认的onShow
方法,而是通过以下方式添加更多:
CKEDITOR.on('dialogDefinition', function (ev) {
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if (dialogName == 'image') {
var oldOnShow = dialogDefinition.onShow;
var newOnShow = function () {
this.selectPage('Upload');
this.hidePage('Link');
// change tabs order
$('a[title=Upload].cke_dialog_tab').css('float', 'left');
};
dialogDefinition.onShow = function () {
oldOnShow.call(this, arguments);
newOnShow.call(this, arguments);
};
}
});
答案 1 :(得分:0)
经过多次调试后,我找到了解决方案。
如果您在image.js中看到onChange
textBox的txtUrl
方法
见第507和513行
你会明白这个错误的原因。
在第513行setCustomData
被调用。
original.setCustomData('isReady','false');
CKEDITOR.on("dialogDefinition", function(ev) {
var dialogName = ev.data.name;
//current editor
var editor = ev.editor;
var dialogDefinition = ev.data.definition;
if (dialogName === "image") {
dialogDefinition.dialog.on('show', function(e){
var dialogBox = e.sender;
//This line is the answer of your question
//this line will get rid of the error setCustomData
dialogBox.originalElement = editor.getSelection().getStartElement();
this.selectPage("Upload");
});
}
});