diff --git a/src/components/editor/TiptapEditor.vue b/src/components/editor/TiptapEditor.vue index 8194aca..69a68e8 100644 --- a/src/components/editor/TiptapEditor.vue +++ b/src/components/editor/TiptapEditor.vue @@ -236,7 +236,8 @@ const editor = useEditor({ }, editorProps: { handlePaste: (view, event) => { - const items = (event.clipboardData || event.originalEvent.clipboardData).items + const clipboardData = event.clipboardData || event.originalEvent.clipboardData + const items = clipboardData.items for (const item of items) { if (item.type.indexOf('image') === 0) { event.preventDefault() @@ -261,9 +262,7 @@ const editor = useEditor({ const pos = findImagePos(tempUrl) if (pos !== -1) { const { tr } = view.state - view.dispatch( - tr.setNodeMarkup(pos, null, { src: data.ori_url }) - ) + view.dispatch(tr.setNodeMarkup(pos, null, { src: data.ori_url })) } } else { window['$message'].error(message || '图片上传失败') @@ -279,10 +278,20 @@ const editor = useEditor({ URL.revokeObjectURL(tempUrl) }) - return true + return true // Handled } } - return false + + // If no image was handled, check for text and paste as plain text. + const text = clipboardData.getData('text/plain') + if (text) { + event.preventDefault() + const { state, dispatch } = view + dispatch(state.tr.insertText(text)) + return true // Handled + } + + return false // Fallback for other cases } } }) diff --git a/src/components/editor/suggestion.js b/src/components/editor/suggestion.js index 2c43b77..83412c2 100644 --- a/src/components/editor/suggestion.js +++ b/src/components/editor/suggestion.js @@ -99,10 +99,14 @@ export default { this.onExit() return true } + if(!component?.props.items?.length){ + return false + } return component.ref.onKeyDown(props) }, onExit() { + console.log('component.element',component.element) component.element.remove() component.destroy() },