gpt4 book ai didi

javascript - 如果 `navigator.clipboard.writeText` 在 android 上由 alert() 继续,为什么不将文本复制到剪贴板

转载 作者:行者123 更新时间:2023-12-05 00:30:12 25 4
gpt4 key购买 nike

尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com