文本复制功能

实现文本复制主要有两种方式,在Web开发中,navigator.clipboard 提供了一组API,允许开发者与浏览器的剪贴板进行交互。特别是,navigator.clipboard.writeText 方法允许你将文本内容写入剪贴板。这个方法在HTTP和HTTPS上下文中的行为略有不同,主要涉及到安全性的考虑。

  1. 在HTTP上下文中使用navigator.clipboard.writeText: 在非安全上下文(即HTTP)中,大多数现代浏览器限制了对剪贴板的访问,以防止潜在的安全风险。在HTTP页面中,navigator.clipboard.writeText 方法通常是不可用的,因为浏览器不允许非安全上下文的网页对剪贴板进行写操作。这是为了防止恶意网站在用户不知情的情况下窃取或篡改剪贴板中的数据。

  2. 在HTTPS上下文中使用navigator.clipboard.writeText: 在安全上下文(即HTTPS)中,navigator.clipboard.writeText 方法通常是可用的,因为HTTPS提供了数据传输过程中的加密、身份验证和数据完整性保护。这意味着在HTTPS页面中,网站可以安全地与剪贴板交互,用户可以通过网站提供的接口复制文本到剪贴板。   注意,尽管navigator.clipboard.writeText 在HTTPS页面中可用,但是某些浏览器可能要求网页在特定的权限下运行,例如,它可能需要通过服务工作线程(Service Worker)来调用,或者用户需要明确地触发复制操作(例如,通过点击一个按钮)。

下面附上两种方式代码:

1、

function copy(content: any) {

  navigator.clipboard

    .writeText(content)

    .then(() => {

      ElMessage('复制成功')

    })

    .catch((error) => {

      console.error('复制文本到剪贴板时发生错误:', error)

    })

}

2、

export function copyText(text?: string) {

  if (!text) return; // 如果文本为空,则不执行复制操作

  try {

    navigator.clipboard.writeText(text).then(() => {

      ElMessage({

        message: "文本已复制到剪切板",

        type: "success",

        duration: 3000,

      }); // 提示用户文本已复制

    });

  } catch (err) {

    const textToCopy = text;

    const textArea = document.createElement("textarea");

    textArea.value = textToCopy;

    document.body.appendChild(textArea);

    textArea.focus();

    textArea.select();

    const successful = document.execCommand("copy"); // 执行复制操作

    document.body.removeChild(textArea);

    const msg = successful

      ? ElMessage({

          message: "文本已复制到剪切板",

          type: "success",

          duration: 3000,

        })

      : console.error("复制失败", err);

  }

}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值