在浏览器中的粘贴事件之外从剪贴板读取文件
Read file from clipboard outside the paste event in a browser
我想知道用户剪贴板数据上是否有文件。
当我像这里这样捕获粘贴事件时,这是可能的:
document.addEventListener('paste', (event) => {
const data = event.clipboardData;
const file = data && data.files && data.files[0];
if (file) {
// do something with the file.
}
});
然而,这需要用户将其粘贴到页面。
我想在他们不做任何操作的情况下实现它,类似于从剪贴板捕获文本:
setInterval(()=>{
const text = await navigator.clipboard.readText();
if (text){
// do something....
}
},1000)
我可以随时 运行 此代码,并“查明”用户的剪贴板上是否有任何文本。
问题是我无法访问那样的文件。如果剪贴板上有文件,我得到一个空字符串。
我知道这可能是一个安全问题,但至少我想知道他们的剪贴板上是否有任何文件(而不是文本)
使用 clipboard.read
方法代替 readText
。适用于任何类型的数据。
https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read
我想知道用户剪贴板数据上是否有文件。
当我像这里这样捕获粘贴事件时,这是可能的:
document.addEventListener('paste', (event) => {
const data = event.clipboardData;
const file = data && data.files && data.files[0];
if (file) {
// do something with the file.
}
});
然而,这需要用户将其粘贴到页面。 我想在他们不做任何操作的情况下实现它,类似于从剪贴板捕获文本:
setInterval(()=>{
const text = await navigator.clipboard.readText();
if (text){
// do something....
}
},1000)
我可以随时 运行 此代码,并“查明”用户的剪贴板上是否有任何文本。
问题是我无法访问那样的文件。如果剪贴板上有文件,我得到一个空字符串。
我知道这可能是一个安全问题,但至少我想知道他们的剪贴板上是否有任何文件(而不是文本)
使用 clipboard.read
方法代替 readText
。适用于任何类型的数据。
https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read