问题描述
我是JavaScript的新手,我不确定如何实现这一目标。我正在使用剪贴板API(https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API)从用户剪贴板中读取文本。我希望用户剪贴板上当前拥有的所有内容都显示在页面上。
我可以做一次一次性粘贴,但是我不确定如何将其变成一个持续运行的过程。我打算间歇性地检查用户的剪贴板,以查看内容是否已更改,如果已更改,则将其粘贴到页面上。只要打开HTML页面,我就希望发生这种情况。这可能吗?
JavaScript似乎不像while(true)
循环那样,就像每当我尝试页面刚刚崩溃/变得无响应时一样。
解决方法
您可以侦听PERSON ITEM_DISTINCT_COUNT COST_DISTINCT_ITEM_SUM
A 2 6
B 2 10
C 1 1
事件,当触发该事件时,您知道用户已从页面复制了某些内容。
对于其他地方发生的剪贴板更改,您可以在窗口上监听copy
事件,然后检查剪贴板更改。
如果没有窗口失去焦点,则无法在另一个应用程序/网页中进行复制。
如果这不起作用,则可以使用setInterval(..)
而不是无限循环。
这里是一个例子:
onfocus
,
您可以设置一个eventListener来连续监听copy
事件,我想这会做您想要做的事情。这样一来,您就可以在用户每次复制内容时连续触发您要显示复制内容的区域的更新。当然,这需要在用户进入页面时第一次阅读,以查看当时剪贴板上是否有任何内容。在检查之后立即设置事件监听器。
来自MDN:
source.addEventListener('copy',(event) => {
const selection = document.getSelection();
event.clipboardData.setData('text/plain',selection.toString().toUpperCase());
event.preventDefault();
});
信息:https://developer.mozilla.org/en-US/docs/Web/API/Element/copy_event