Javascript 现在execCommand(“复制”)已过时,请将文本复制到剪贴板

Javascript 现在execCommand(“复制”)已过时,请将文本复制到剪贴板,javascript,Javascript,我刚刚在Mozilla页面上看到execCommand()已经过时 此功能已过时。尽管它在某些浏览器中仍然可以使用,但不鼓励使用它,因为它可以随时删除。请尽量避免使用它 这是当用户单击“复制文本”按钮时,我当前用于将文本复制到用户的剪贴板的内容。还有别的办法吗 var input = // input element with the text input.focus(); input.setSelectionRange(0,99999); document.execCommand("c

我刚刚在Mozilla页面上看到execCommand()已经过时

此功能已过时。尽管它在某些浏览器中仍然可以使用,但不鼓励使用它,因为它可以随时删除。请尽量避免使用它

这是当用户单击“复制文本”按钮时,我当前用于将文本复制到用户的剪贴板的内容。还有别的办法吗

 var input = // input element with the text
 input.focus();
 input.setSelectionRange(0,99999);
 document.execCommand("copy");
 input.blur();

编辑:这不回答问题。它提出了相同的过时解决方案。

来自Klaycon对该问题的评论。替代品是剪贴板API。它不是在所有浏览器中都实现的,但在大多数浏览器中都实现了

对于某些浏览器(如Firefox),这仅在由用户操作启动时起作用。例如,将代码放在按钮侦听器中


我在(Windows)Chrome、Firefox、new Edge、Opera、iOS Safari、iOS Chrome、iOS应用程序webview中测试了这一点(2020年2月)。剪贴板writeText非常有效

这回答了你的问题吗?另一种选择是,如MDN上所述:“此API旨在取代使用
document.execCommand()
”访问剪贴板。但是请注意,对此API的支持尚未普及,因此正如链接的复制目标中所建议的那样,您可能最终会回到
document.execCommand(“复制”)无论如何,更广泛的浏览器覆盖范围。谢谢。听起来他们在没有准备好替换的情况下使解决方案过时了。别忘了检查用户是否为此授予了权限:
navigator.permissions.query({name:'clipboard read'})
从剪贴板读取和写入权限是必需的,但不能写入文本。(不确定write和writeText之间的区别。)@user984003剪贴板接口的writeText()属性将指定的文本字符串写入系统剪贴板。剪贴板方法write()将图像等任意数据写入剪贴板。这可用于实现剪切和复制功能。
// In this example, the text to copy would be in an element with id = textcopy

var text_to_copy = document.getElementById("textcopy").innerHTML;

if (!navigator.clipboard){
    // use old commandExec() way
} else{
    navigator.clipboard.writeText(text_to_copy).then(
        function(){
            alert("yeah!"); // success 
        })
      .catch(
         function() {
            alert("err"); // error
      });
}