Closed junestars closed 2 months ago
0.9.84
https://hufe.club/canvas-editor/
首先非常感谢您更新了自定义 paste 并可选的保持 paste 默认行为的功能,非常感谢!
目前这个功能存在以下问题,使其不能充分发挥其作用 1、源码中的 isPromiseFunction 方法无法正确的判断 override.paste 是否是返回 Promise 的函数
isPromiseFunction
override.paste
Promise
// 在 Vue 的单文件组件 const instance = new Editor(container, data, options); instance.override.paste = async () => ({ preventDefault: false }); // 这里会打印 Function 而非 AsyncFunction console.log(instance.override.paste.constructor.name); // Function
// 在浏览器控制台 const func = async () => ({ preventDefault: false }); func .constructor.name // 会打印出 AsyncFunction
2、如果在 override.paste 中读取了剪切板,override.paste 为异步方法,且没有被立刻解决,则默认行为中的 clipboardData.getData('text') 会返回 '',导致默认行为无法正常执行。是否可以在调用 override.paste 之前将剪切板的内容存在变量中,以备后续使用。下面是复现的代码
clipboardData.getData('text')
''
instance.override.paste = async event => { const clipboardText = event.clipboardData.getData('text'); console.log({ clipboardText }); // 剪切板的文本 function doSomething() { const { promise, resolve } = Promise.withResolvers(); setTimeout(() => { resolve(); }, 0); return promise; } // 如果注释 doSomething 的调用,默认行为正常 // 如果调用,则默认行为中的 clipboardData.getData('text') 会返回空字符串 await doSomething(); return { preventDefault: false }; };
1、可以正常判断返回 Promise 的函数 2、在粘贴的整个过程中,可以持续访问剪切板的内容,包括文本、html 和 文件
如上
No response
移除保持默认行为参数时异步支持,使用异步函数需全部重写。原因:
version
0.9.84
Link to minimal reproduction
https://hufe.club/canvas-editor/
Steps to reproduce
首先非常感谢您更新了自定义 paste 并可选的保持 paste 默认行为的功能,非常感谢!
目前这个功能存在以下问题,使其不能充分发挥其作用 1、源码中的
isPromiseFunction
方法无法正确的判断override.paste
是否是返回Promise
的函数2、如果在
override.paste
中读取了剪切板,override.paste
为异步方法,且没有被立刻解决,则默认行为中的clipboardData.getData('text')
会返回''
,导致默认行为无法正常执行。是否可以在调用override.paste
之前将剪切板的内容存在变量中,以备后续使用。下面是复现的代码What is expected?
1、可以正常判断返回
Promise
的函数 2、在粘贴的整个过程中,可以持续访问剪切板的内容,包括文本、html 和 文件What is actually happening?
如上
System Info
No response
Any additional comments?
No response