尝试使用 navigator.clipboard.writeText()
在 chrome for android 上复制一些文本时只要我之后不显示警报,它就可以工作。当我显示 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>
任何人都知道发生了什么?!谢谢
最佳答案
因为navigator.clipboard.writeText
方法返回一个promise,并且你不需要等待它的结果,如果你更正下面这样的代码就可以了:
function myFunction() {
var copyText = document.getElementById("myInput");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard
.writeText(copyText.value)
.then(() => {
alert("successfully copied");
})
.catch(() => {
alert("something went wrong");
});
}
还有更多关于Promise
的信息和 navigator.clipboard.writeText
方法请访问以下链接:Link 1
Link 2
关于javascript - 如果 `navigator.clipboard.writeText` 在 android 上由 alert() 继续,为什么不将文本复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69438702/