当前位置:首页 > JavaScript

js 实现复制功能

2026-04-04 01:06:18JavaScript

使用 document.execCommand 方法

这种方法兼容性较好,但已逐渐被废弃。

function copyText(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();
  document.execCommand('copy');
  document.body.removeChild(textarea);
}

使用 Clipboard API

现代浏览器推荐使用 Clipboard API。

async function copyText(text) {
  try {
    await navigator.clipboard.writeText(text);
    console.log('Text copied to clipboard');
  } catch (err) {
    console.error('Failed to copy text: ', err);
  }
}

处理复制按钮点击事件

为按钮添加点击事件处理程序。

document.getElementById('copyBtn').addEventListener('click', () => {
  const textToCopy = document.getElementById('textToCopy').value;
  copyText(textToCopy);
});

添加复制反馈

提供视觉反馈增强用户体验。

function showCopiedFeedback() {
  const feedback = document.createElement('div');
  feedback.textContent = 'Copied!';
  feedback.style.position = 'fixed';
  feedback.style.bottom = '20px';
  feedback.style.right = '20px';
  feedback.style.padding = '10px';
  feedback.style.background = '#333';
  feedback.style.color = '#fff';
  document.body.appendChild(feedback);

  setTimeout(() => {
    document.body.removeChild(feedback);
  }, 2000);
}

兼容性处理

结合两种方法确保最大兼容性。

async function copyText(text) {
  if (navigator.clipboard) {
    try {
      await navigator.clipboard.writeText(text);
      return true;
    } catch (err) {
      console.error('Clipboard API failed', err);
    }
  }

  const textarea = document.createElement('textarea');
  textarea.value = text;
  textarea.style.position = 'fixed';
  document.body.appendChild(textarea);
  textarea.select();

  try {
    const successful = document.execCommand('copy');
    document.body.removeChild(textarea);
    return successful;
  } catch (err) {
    document.body.removeChild(textarea);
    return false;
  }
}

处理复制权限问题

某些浏览器可能要求复制操作必须在用户交互中触发。

js 实现复制功能

document.getElementById('copyBtn').addEventListener('click', async () => {
  const success = await copyText('要复制的文本');
  if (success) {
    showCopiedFeedback();
  } else {
    alert('复制失败');
  }
});

标签: 功能js
分享给朋友:

相关文章

vue实现功能插件

vue实现功能插件

Vue 插件实现方法 Vue 插件通常用于封装全局功能(如指令、过滤器、混入等),以下是实现 Vue 插件的典型方式: 插件基本结构 const MyPlugin = { install(Vu…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

vue实现论坛功能

vue实现论坛功能

实现论坛功能的核心模块 论坛功能通常包含用户发帖、回帖、分类浏览、搜索等核心模块。Vue.js 作为前端框架,需配合后端 API 实现数据交互。 基础项目结构搭建 使用 Vue CLI 或 Vite…

php秒杀功能的实现

php秒杀功能的实现

秒杀功能的核心设计 高并发场景下秒杀系统的核心在于解决超卖问题和性能瓶颈。需要结合缓存、队列、锁机制等技术实现。 数据库设计 商品表需包含库存字段,例如: CREATE TABLE `seckil…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…