




本文介绍如何利用 navigator.clipboard.writetext() 原生 api,将多个 元素的值无缝拼接(去除空格、换行及非数字字符),并一次性复制到剪贴板,无需依赖 clipboard.js 或 jquery。
在实际开发中,为表单添加“一键复制”功能时,若直接使用 data-clipboard-target 指向整个
Copy Copy// 获取所有复制按钮
const copyButtons = document.querySelectorAll('.btn_copy');
Array.from(copyButtons).forEach(button => {
button.addEventListener('click', async () => {
const selector = button.getAttribute('data-clipboard-target');
if (!selector) return;
const inputs = document.querySelectorAll(selector);
const values = Array.from(inputs)
.map(input => input.value || '') // 防空值
.map(val => val.replace(/[^0-9]/g, '')) // 【关键】仅保留数字(可选)
.join(''); // 无缝拼接,无分隔符
try {
await navigator.clipboard.writeText(values);
console.log(`Copied: "${values}"`);
// ✅ 可在此添加成功提示(如 Toast)
} catch (err) {
console.error('Failed to copy: ', err);
// ❌ 建议 fallback:降级使用 document.execCommand(仅旧版浏览器)
}
});
});
相比 Clipboard.js 的声明式绑定,原生 navigator.clipboard.writeText() 提供了更高的灵活性与可控性。通过精准选择器 + 数组链式处理(.map().join('')),你不仅能彻底消除换行与空格,还能自由扩展逻辑——例如自动补零、添加分隔符、格式化为手机号等。这既是轻量化的最佳实践,也是现代 Web 开发中“优先使用原生 API”的典型范例。