原代碼寫過一片js實現復制的代碼? 那段代碼有問題 以下是之前寫的一段有問題的原代碼:
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可正常復制
修改后:
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 問題得到正常解決!~