gpt4 book ai didi

javascript - 如何等待剪贴板操作?

转载 作者:行者123 更新时间:2023-11-30 19:39:18 25 4
gpt4 key购买 nike

在我的 Google Chrome 扩展程序中,我想在用户按下 CTRL+C 或 CTRL+X 时执行某些操作,所以基本上只要他们剪切或复制文本。当按下这些键时触发事件不是问题,但行为是:复制工作正常,除了它取消选择文本的事实,但剪切更糟。它会复制标记的文本,但不会剪切/删除文本,它只是像复制功能一样取消选择文本。

我在这里做错了什么?在使用剪贴板内容之前,是否需要等待剪切功能完成?

这就是我所拥有的,包括一个应该延迟脚本执行的函数(显然不起作用):

function doAdelay(){
setTimeout(function(){return true;},30000);
};

var map = {};
onkeydown = onkeyup = function(e) {
map[e.keyCode] = e.type == 'keydown';

if(map[17] && (map[67] || map[88])) { // CTRL + C or X
doAdelay();

var copiedText = window.getSelection().toString();
var tempTextArea = document.createElement('textarea');
tempTextArea.setAttribute('readonly', '');
tempTextArea.style.position = 'absolute';
tempTextArea.style.left = '-9999px';
document.body.appendChild(tempTextArea);

tempTextArea.value = copiedText;
tempTextArea.select();
document.execCommand("copy");
document.body.removeChild(tempTextArea);
}
}

最佳答案

你是对的。您的超时功能什么都不做。您唯一要做的就是延迟 setTimeout() 中的匿名函数的执行。您可以将代码移到该函数中,但我非常怀疑添加延迟是否会始终如一地工作。 keyup 事件就是 keyUp。之后会发生什么是任何人的猜测。您也许可以连接到 onCopy事件;可能混合建议。还有 onCut事件也是如此。

虽然我自己尝试过,但复制部分似乎在 Firefox 中有效。我通过在 var copiedText 之后放置一个 console.log(copiedText); 来验证这一点。您的代码还有其他问题。

还有一件事,CTRL 仅用于 Windows 上的复制粘贴。在 Mac 上,它是一个不同的键(Command aka Windows Key aka Super Key)。

关于javascript - 如何等待剪贴板操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com