diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index b7a56aa7..19336af2 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -1,4 +1,10 @@ -import { getStrWithBrFromHtml, checkNodeOuter, focusInput, selectAllInput } from '../../utils' +import { + getStrWithBrFromHtml, + checkNodeOuter, + focusInput, + selectAllInput, + htmlEscape +} from '../../utils' import { ERROR_TYPES } from '../../constants/constant' // 节点文字编辑类 @@ -167,9 +173,11 @@ export default class TextEdit { let scale = this.mindMap.view.scale let lineHeight = node.style.merge('lineHeight') let fontSize = node.style.merge('fontSize') - let textLines = (this.cacheEditingText || node.nodeData.data.text).split( - /\n/gim - ) + let textLines = (this.cacheEditingText || node.nodeData.data.text) + .split(/\n/gim) + .map(item => { + return htmlEscape(item) + }) let isMultiLine = node._textData.node.attr('data-ismultiLine') === 'true' node.style.domText(this.textEditNode, scale, isMultiLine) this.textEditNode.style.zIndex = nodeTextEditZIndex diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index 3096e28b..59c73d80 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -797,3 +797,15 @@ export const getNodeIndex = node => { }) : 0 } + +// html转义 +export const htmlEscape = str => { + ;[ + ['&', '&'], + ['<', '<'], + ['>', '>'] + ].forEach(item => { + str = str.replace(new RegExp(item[0], 'g'), item[1]) + }) + return str +}