js复制内容到剪切板
复制内容到剪切板
最近预报一个需求需要点击按钮复制当前到行的内容到剪切板,
所以写了这个工具
export function copyText(text: string, prompt: string | null = '已成功复制到剪切板!') {if (navigator.clipboard) {return navigator.clipboard.writeText(text).then(() => {prompt && console.log(prompt)}).catch((error) => {console.error('复制失败!' + error.message);return error;});}if (Reflect.has(document, 'execCommand')) {return new Promise((resolve, reject) => {try {const textArea = document.createElement('textarea');textArea.value = text;// 在手机 Safari 浏览器中,点击复制按钮,整个页面会跳动一下textArea.style.width = '0';textArea.style.position = 'fixed';textArea.style.left = '-999px';textArea.style.top = '10px';textArea.setAttribute('readonly', 'readonly');document.body.appendChild(textArea);textArea.select();document.execCommand('copy');document.body.removeChild(textArea);prompt && console.log(prompt)resolve();} catch (error) {console.error('复制失败!' + error.message);reject(error);}});}return Promise.reject(`"navigator.clipboard" 或 "document.execCommand" 中存在API错误, 拷贝失败!`);
}