复制文本到剪贴板
copyToClipboard
函数签名
typescript
function copyToClipboard(text: string): Promise<boolean>描述
复制文本到剪贴板
参数
| 参数名 | 类型 | 可选 | 默认值 | 描述 |
|---|---|---|---|---|
text | string | 否 | - | - |
返回值
Promise<boolean>
点击查看源码
js
/**
* 复制文本到剪贴板
* @param text - 要复制的文本
* @returns Promise<boolean> - 是否复制成功
*/
export async function copyToClipboard(text) {
try {
// 优先使用现代 Clipboard API
if (navigator.clipboard && window.isSecureContext) {
await navigator.clipboard.writeText(text);
return true;
}
// 降级方案:使用 document.execCommand
const textArea = document.createElement("textarea");
textArea.value = text;
textArea.style.position = "fixed";
textArea.style.left = "-999999px";
textArea.style.top = "-999999px";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
const successful = document.execCommand("copy");
textArea.remove();
return successful;
} catch (error) {
console.error("Failed to copy text:", error);
return false;
}
}ts
/**
* 复制文本到剪贴板
* @param text - 要复制的文本
* @returns Promise<boolean> - 是否复制成功
*/
export async function copyToClipboard(text: string): Promise<boolean> {
try {
// 优先使用现代 Clipboard API
if (navigator.clipboard && window.isSecureContext) {
await navigator.clipboard.writeText(text);
return true;
}
// 降级方案:使用 document.execCommand
const textArea = document.createElement("textarea");
textArea.value = text;
textArea.style.position = "fixed";
textArea.style.left = "-999999px";
textArea.style.top = "-999999px";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
const successful = document.execCommand("copy");
textArea.remove();
return successful;
} catch (error) {
console.error("Failed to copy text:", error);
return false;
}
}如有错误,请提交issue :::