首页 > 解决方案 > Jodit:粘贴调用html粘贴弹出的文本失败

问题描述

我正在向网页添加 Jodit 编辑器。我希望能够将格式化文本从 MS Word 粘贴到编辑器中。我可以粘贴不调用用于粘贴 html 文本的小弹出窗口的文本,但不能粘贴带有格式的文本。控制台记录一个警告,即addRange(): The given range isn't in document. 实际上,日志记录window.getSelection().rangeCount返回 0(而不是其他情况下的 1)。我不知道从各种程序粘贴有什么问题,当然,可以在网站上使用。我错过了一个活动吗?

标签: jodit

解决方案


问题是编辑器位于 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

          });


推荐阅读