当尝试使用 navigator.clipboard.writeText()
只要我之后不显示警报,它就可以工作。我显示 alert() 的那一刻它就不再起作用了。
例如,这按预期工作正常
function myFunction() {
var copyText = document.getElementById("myInput");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard.writeText(copyText.value);
}
<input type="text" value="Hello world" id="myInput" style="width:auto">
<button onclick="myFunction()">copy</button>
然而,这不起作用,它不会在控制台中抛出任何错误,并且在 PC 上的 chrome 上运行良好,但不适用于 Android。
function myFunction()
{
var copyText = document.getElementById("myInput");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard.writeText(copyText.value);
alert("Successfully copied the text")
}
<input type="text" value="Hello world" id="myInput" style="width:auto" >
<button onclick="myFunction()" >copy</button>
任何人都知道发生了什么事?!。谢谢
原文由 Antony 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为
navigator.clipboard.writeText
方法返回一个承诺,您的代码不会等待其结果。如果您按如下所示更正代码,那么它应该没问题:
有关
Promise
和navigator.clipboard.writeText
方法的更多信息,请访问以下链接:JavaScript.info 上的承诺
与 MDN 上的剪贴板交互