From 715cfff1b3a815568101dedc00b6a430e473df57 Mon Sep 17 00:00:00 2001 From: ShineKOT <1917095344@qq.com> Date: Tue, 2 Sep 2025 11:52:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=87=E6=B3=A8=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=A4=8D=E5=88=B6=E7=B2=98=E8=B4=B4=E5=92=8C?= =?UTF-8?q?=E5=9B=9E=E8=BD=A6=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic-design/custom-node/remark-node.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/packages/antv-x6-design/src/plugins/logic-design/custom-node/remark-node.ts b/packages/antv-x6-design/src/plugins/logic-design/custom-node/remark-node.ts index 63beb2a5..15c4fba0 100644 --- a/packages/antv-x6-design/src/plugins/logic-design/custom-node/remark-node.ts +++ b/packages/antv-x6-design/src/plugins/logic-design/custom-node/remark-node.ts @@ -25,6 +25,13 @@ export class RemarkNode extends Shape.HTML { */ outputNum: number = 0; + /** + * @description 是否注册监听 + * @type {boolean} + * @memberof RemarkNode + */ + isRegisterListener: boolean = false; + constructor(metadata: Node.Metadata = {}) { const data = metadata.data || {}; const nodeSize = { @@ -56,6 +63,7 @@ export class RemarkNode extends Shape.HTML { private setupEvents() { this.on('selected', (): void => { // 选中时使内容可编辑 + this.registerListener(); this.setNodeEditable(true); }); this.on('unselected', (): void => { @@ -138,4 +146,36 @@ export class RemarkNode extends Shape.HTML { } } } + + /** + * @description 注册监听 + * @private + * @returns {*} {Promise} + * @memberof RemarkNode + */ + private async registerListener(): Promise { + const contentEl = document.getElementById(this.id); + if (!contentEl || this.isRegisterListener) return + this.isRegisterListener = true; + const listener = (e: ClipboardEvent | KeyboardEvent) => { + e.preventDefault(); + e.stopPropagation(); + }; + // 禁用粘贴 + contentEl.addEventListener('paste', listener); + // 禁用复制 + contentEl.addEventListener('copy', listener); + // 禁用剪切 + contentEl.addEventListener('cut', listener); + // 禁用快捷键 + contentEl.addEventListener('keydown', e => { + // 禁用回车键和快捷键Ctrl+C、Ctrl+V、Ctrl+X + if ( + e.key === 'Enter' || + ((e.ctrlKey || e.metaKey) && + (e.key === 'c' || e.key === 'v' || e.key === 'x')) + ) + listener(e); + }); + } } -- Gitee