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