我正在向网页添加 Jodit 编辑器。我希望能够将格式化文本从 MS Word 粘贴到编辑器中。我可以粘贴不调用用于粘贴 html 文本的小弹出窗口的文本,但不能粘贴带有格式的文本。控制台记录一个警告,即addRange(): The given range isn't in document
. 实际上,日志记录window.getSelection().rangeCount
返回 0(而不是其他情况下的 1)。我不知道从各种程序粘贴有什么问题,当然,可以在网站上使用。我错过了一个活动吗?
问问题
1071 次
1 回答
1
问题是编辑器位于 ag-grid 单元格中。从 MS Word 粘贴到编辑器时,对话框中的不同选择位于 ag-grid 单元格之外,因此在对话框中单击结束了 ag-grid 会话中期编辑!由于我正在寻找的行为是保持格式,我只是关闭了对话框(askBeforePasteFromWord: false
, askBeforePasteHTML: false
)。为了仍然处理 MS Word 的粘贴(因为 MS Word),在 Jodit 的作者代码中添加到自动处理(https://github.com/xdan/jodit/issues/197):
jodit_editor = new Jodit(text_area_element, {
hotkeys: {
redo: 'ctrl+z',
undo: 'ctrl+y,ctrl+shift+z',
indent: 'ctrl+]',
outdent: 'ctrl+[',
bold: 'ctrl+b',
italic: 'ctrl+i',
removeFormat: 'ctrl+shift+m',
insertOrderedList: 'ctrl+shift+7',
insertUnorderedList: 'ctrl+shift+8',
openSearchDialog: 'ctrl+f',
openReplaceDialog: 'ctrl+r',
},
events: {
processPaste: function(event, html){
jodit_editor.selection.insertHTML(html);
jodit_editor.tempContent = jodit_editor.getEditorValue();
},
afterPaste: function(event){
let el = $('<div></div>');
el.html(jodit_editor.tempContent ? jodit_editor.tempContent : jodit_editor.getEditorValue());
jodit_editor.setEditorValue(el.html());
jodit_editor.tempContent = null;
},
},
askBeforePasteFromWord: false,
askBeforePasteHTML: false
});
于 2020-05-28T19:54:22.967 回答