JavaScript:如何才能有一个持续运行的进程来进行监控?

Jam*_*ald 0 javascript clipboard

我是 JavaScript 新手,不太确定如何实现这一点。我正在使用剪贴板 API ( https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API ) 从用户的剪贴板读取文本。我希望用户当前剪贴板上的所有内容都显示在页面上。

我可以很好地进行一次性粘贴,但我不确定如何将其变成一个持续运行的过程。我计划间歇性地检查用户的剪贴板,看看内容是否已更改,如果已更改,则将其粘贴到页面上。我希望只要 HTML 页面打开,就会发生这种情况。这可能吗?

JavaScript 似乎不喜欢while(true)循环,因为每当我尝试页面刚刚崩溃/变得无响应时。

Tit*_*tus 5

您可以监听该copy事件,当该事件被触发时,您就知道用户已从页面复制了某些内容。

对于其他地方发生的剪贴板更改,您可以侦听onfocus窗口上的事件并检查剪贴板更改。

如果您的窗口失去焦点,则无法在另一个应用程序/网页中进行复制。

如果这不起作用,您可以使用setInterval(..)无限循环来代替。

这是一个例子:

let prevClipText;

setInterval(() => {
  navigator.clipboard.readText().then(clipText => {
    if (clipText !== prevClipText) {
      console.log('clipboard content was changed to:', clipText);
      prevClipText = clipText;
    }
  });
}, 500);
Run Code Online (Sandbox Code Playgroud)