Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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在1分钟后清除剪贴板_Javascript_Clipboard - Fatal编程技术网

Javascript在1分钟后清除剪贴板

Javascript在1分钟后清除剪贴板,javascript,clipboard,Javascript,Clipboard,我当前正在使用以下代码将文本复制到剪贴板: navigator.clipboard.writeText(element.value).then(function() { /* clipboard successfully set */ }, function() { /* clipboard write failed */ console.log('Copy to clipboard failed!'); }); 如果数据成功复制到剪贴板,我需要在1分钟后自动清除剪贴板

我当前正在使用以下代码将文本复制到剪贴板:

navigator.clipboard.writeText(element.value).then(function() {
    /* clipboard successfully set */
}, function() {
    /* clipboard write failed */
    console.log('Copy to clipboard failed!');
});
如果数据成功复制到剪贴板,我需要在1分钟后自动清除剪贴板

我尝试使用
setTimeout()
方法,但从
setTimeout
调用时,写入剪贴板失败

另外,如果我使用
execCommand('copy')
方法,我会得到以下错误:
document.execCommand('cut'/'copy')被拒绝,因为它不是从短时间运行的用户生成的事件处理程序内部调用的。

我正在努力使它在Firefox中工作

我试图将代码放入setTimeout()中,如下所示:

setTimeout(function() {
    navigator.clipboard.writeText('').then(function() {
        /* Successfully cleared clipboard */
    }, function() {
        /* Failed to clear clipboard */
    }
}, 60000);

Firefox要求命令来自用户事件,如单击。这就是为什么处理程序不起作用。(你不会想要一些流氓javascript在那里粘贴数据,对吧?)

确切的措辞是命令必须从中调用

短时间运行的用户生成的事件处理程序

权变措施 1个虚拟
输入元素
文档.execCommand(“复制”)
使用具有单个空格作为值的虚拟输入元素,以及不同的API来选择并将其复制到剪贴板

函数clearClipboardFromSetTimeout(){ //这应该行得通,但行不通 //if(document.selection)document.selection.empty() //else window.getSelection().removeAllRanges() //创建要选择的虚拟输入 var tempElement=document.createElement(“输入”); tempElement.style.cssText=“宽度:0!重要;填充:0!重要;边框:0!重要;边距:0!重要;轮廓:无!重要;框影:无!重要;”; document.body.appendChild(tempElement); tempElement.value=''//空字符串无效! tempElement.select(); 文件。执行命令(“副本”); document.body.removeChild(tempElement) } 函数doIt(){ navigator.clipboard .writeText(“你好”) .然后(=> navigator.clipboard.readText()然后(text=>console.log(“before”,text)) ); 设置超时(()=>{ clearClipboardFromSetTimeout() navigator.clipboard.readText().then(text=>console.log(“after”,text)); }, 2000); }
该代码段在Firefox中不起作用,但clearClipboardFromSetTimeout方法会起作用。

在setTimeOut中设置然后清除
是否使用Firefox?如果没有用户的直接交互,您可能无法操作剪贴板的内容。请包含失败的
setTimeout
代码。@HarryCutts我已经添加了我试图在setTimeout内执行的代码。@Carcigenicate是的,我正试图使其与Firefox一起工作。我所寻求的是一个工作环境,因此它可以与Firefox一起工作。对于我的web应用程序,我需要在1分钟后清除剪贴板上复制的文本。我真的不希望使用Flash。请详细说明保存单击上下文并在以后使用它的第二种方法好吗?@Pratanumadal我添加了另一种解决方法,并将添加一个指向该方法的链接。@Pratanumadal我发现了一些东西。阅读我的第一个变通方法。它“几乎清晰”,因为剪贴板中有一个空格。您提供的代码不适用于我。事实上,我已经试过了,以前也没用过。你能检查一下吗?你正在为你的网页提供https服务吗?