原代码写过一片js实现复制的代码 那段代码有问题 以下是之前写的一段有问题的原代码:
javascript
let url = "kkkkkk";
const hiddenTextarea = document.createElement("textarea");
hiddenTextarea.style.position = "absolute";
hiddenTextarea.style.left = "-9999px";
hiddenTextarea.setAttribute("readonly", "");
hiddenTextarea.value = url;
document.body.appendChild(hiddenTextarea);
hiddenTextarea.select();
hiddenTextarea.focus();
document.execCommand("copy");
showToast("复制成功");
// 清除虚拟焦点元素
document.body.removeChild(hiddenTextarea);
之前ios都是好好的 奈何ios升级了17版本 于是我的复制就不生效了 不过又发现一段新代码 尝试了下 ios17可正常复制
修改后:
javascript
const textarea = document.createElement("textarea");
textarea.style.position = "fixed";
textarea.style.top = 0;
textarea.style.left = 0;
textarea.style.border = "none";
textarea.style.outline = "none";
textarea.style.resize = "none";
textarea.style.background = "transparent";
textarea.style.color = "transparent";
textarea.value = url; // 修改文本框的内容
document.body.appendChild(textarea);
textarea.select(); // 选中文本
try {
const msg = document.execCommand("copy") ? "复制成功" : "复制失败";
// H.$toast("复制成功");
showToast(`${msg}`);
} catch (err) {
// alert("unable to copy", err);
// H.$toast("复制失败");
showToast("复制失败");
}
document.body.removeChild(textarea);
原因可能是第一段代码中的 hiddenTextarea.setAttribute("readonly", "");";
设置导致在iOS 17上无法复制。而第二段代码中,将这个属性删除,从而在iOS 17上可以正常复制。
so 问题得到正常解决!~