mirror of
https://github.com/wanglin2/mind-map.git
synced 2026-02-21 10:27:44 +08:00
Feat:增加对节点非富文本编辑时的粘贴的拦截操作
This commit is contained in:
parent
1409b07fb3
commit
0cfa21d4e6
@ -3,7 +3,10 @@ import {
|
||||
checkNodeOuter,
|
||||
focusInput,
|
||||
selectAllInput,
|
||||
htmlEscape
|
||||
htmlEscape,
|
||||
handleInputPasteText,
|
||||
checkSmmFormatData,
|
||||
getTextFromHtml
|
||||
} from '../../utils'
|
||||
import { ERROR_TYPES, CONSTANTS } from '../../constants/constant'
|
||||
|
||||
@ -226,6 +229,16 @@ export default class TextEdit {
|
||||
e.stopPropagation()
|
||||
}
|
||||
})
|
||||
this.textEditNode.addEventListener('paste', e => {
|
||||
const text = e.clipboardData.getData('text')
|
||||
const { isSmm, data } = checkSmmFormatData(text)
|
||||
if (isSmm && data[0] && data[0].data) {
|
||||
// 只取第一个节点的纯文本
|
||||
handleInputPasteText(e, getTextFromHtml(data[0].data.text))
|
||||
} else {
|
||||
handleInputPasteText(e)
|
||||
}
|
||||
})
|
||||
const targetNode =
|
||||
this.mindMap.opt.customInnerElsAppendTo || document.body
|
||||
targetNode.appendChild(this.textEditNode)
|
||||
|
||||
@ -1058,3 +1058,19 @@ export const checkSmmFormatData = data => {
|
||||
data: isSmm ? smmData : String(data)
|
||||
}
|
||||
}
|
||||
|
||||
// 处理输入框的粘贴事件,会去除文本的html格式、换行
|
||||
export const handleInputPasteText = (e, text) => {
|
||||
e.preventDefault()
|
||||
const selection = window.getSelection()
|
||||
if (!selection.rangeCount) return
|
||||
selection.deleteFromDocument()
|
||||
text = text || e.clipboardData.getData('text')
|
||||
// 去除格式
|
||||
text = getTextFromHtml(text)
|
||||
// 去除换行
|
||||
text = text.replaceAll(/\n/g, '')
|
||||
const node = document.createTextNode(text)
|
||||
selection.getRangeAt(0).insertNode(node)
|
||||
selection.collapseToEnd()
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user