前端复制文本

import { message } from "antd"
// 复制
export let copyToCliboard = (text) => {

  const execCommandCopy = text => {
    if (!text) {
      return message.info('复制内容为空')
    }
    //   deprecated
    const input = document.createElement('textarea')
    try {
      input.setAttribute('readonly', 'readonly');
      input.value = text.replace(/\n/g, "\r") ///n的换行会丢失
      document.body.appendChild(input)
      input.select()
      document.execCommand('copy')
      document.body.removeChild(input)
      message.success('复制成功!')
    } catch (e) {
      message.error('自动复制被禁用,请手动选取复制')
    }
  }

  const navigatorCopy = text => {
    if (!text) {
      return message.info('复制内容为空')
    }
    try {
      navigator.clipboard.writeText(text).then(
        () => {
          message.success('复制成功')
        },
        () => {
          execCommandCopy(text)
        },
      )
      return
    } catch (e) {
      execCommandCopy(text)
      console.error('不支持异步剪切板:', e)
    }
  }

  console.log('复制功能初始化')
  // 重写函数,避免函数执行重复性判断, 例如上述console.log('复制功能初始化')只会执行一次
  copyToCliboard = !navigator.clipboard ? execCommandCopy : navigatorCopy
  copyToCliboard(text)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值