Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待剪贴板操作?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 如何等待剪贴板操作?

Javascript 如何等待剪贴板操作?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,在我的Google Chrome扩展中,我想在用户按下CTRL+C或CTRL+X时做一些事情,所以基本上只要他们剪切或复制文本。当按下这些键时触发事件不是问题,但行为是:复制工作正常,只是它取消选择文本,但剪切更糟糕。它将复制标记的文本,但不会剪切/删除文本,只需像使用复制功能一样取消选择文本 我做错了什么?在处理剪贴板内容之前,是否需要等待剪切功能完成 这就是我所拥有的,包括一个应该延迟脚本执行的函数(显然不起作用): 你说得对。您的超时函数没有执行任何操作。您要做的唯一一件事就是延迟setT

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

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

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


你说得对。您的超时函数没有执行任何操作。您要做的唯一一件事就是延迟setTimeout()中的匿名函数的执行。您可以将代码移动到该函数中,但我高度怀疑添加延迟是否能持续工作。keyup事件就是这样,keyup。之后会发生什么,大家都在猜测。你也许能参与到这项活动中来;可能有混合的建议。还有这个活动

不过,我自己尝试一下,复制部分似乎在Firefox中起作用。我通过放置
console.log(copiedText)来验证这一点
var copiedText
之后。您的代码有其他问题


还有一件事,CTRL仅用于在Windows上复制粘贴。在Mac上,它是一个不同的密钥(命令又名Windows密钥又名超级密钥)

哦。。。我的。。。上帝我要是早点知道这些函数就好了,这样可以省去我很多麻烦。谢谢
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);
    }
}