微信小程序 webview 中实现 copy 功能

1,039 阅读1分钟

微信小程序 webview 中实现 copy 功能

管理后台使用了富文本编辑器,所以修改思路:

  1. 管理后台使用了富文本编辑器 quill ,其中附件上传后生成的链接添加 class extendLink

  2. 展示富文本的页面 detail 页面中通过 JavaScript:document.querySelectorAll('#noticeDetail .extendLink') 选择 extendLink 链接添加点击事件

  3. 点击事件触发 copy 事件

复制的 copy 功能代码:

const copyToClipboard = (text) => {
  // alert(text)
  const isSafari = navigator.userAgent.match(/iPad|iPhone|iPod|Macintosh/i)

  return new Promise((resolve) => {
    // iOS 才用现代的方法复制,因为微信小程序安卓 webview 上用这个方法会报错
    if (navigator.clipboard && isSafari) {
      navigator.clipboard
        .writeText(text)
        .then(() => {
          resolve(true)
        })
        .catch(() => {
          resolve(false)
        })
    } else {
      copy(text, {
        format: 'text/plain',
        message: '请点击确定按钮复制链接',
      })
      resolve(true)
    }
  })
}

调用该函数

btn.addEventListener('click', function (e) {
  e.preventDefault()
  const link = btn.getAttribute('href')
  copyToClipboard(link).then((res) => {
    console.log('copyToClipboard then')
    toast.success('附件链接地址复制成功,请到浏览器中粘贴下载')
  })
})

Refer

  1. 浏览器复制粘贴以及手机端 webview 复制粘贴_华为手机 webview 粘贴无数据-CSDN 博客

  2. 在安卓手机通过小程序 Webview 打开 H5 页面,H5 页面的复制功能为什么失败了? | 微信开放社区 可以试下

    在安卓手机通过小程序 Webview 打开 H5 页面,H5 页面的复制功能为什么失败了?? 何锦余 的回答 - 微信开放社区 developers.weixin.qq.com/community/d…

    这个回答改了下,使用的 package copy-to-clipboard - npm

  3. 微信 H5 页面兼容性——复制到剪贴板 - 艾前端 - 博客园

  4. React 复制到粘贴板 兼容各种浏览器 copy-to-clipboard、原生 js、clipboard 方案-CSDN 博客

  5. 剪贴板操作 Clipboard API 教程 - 阮一峰的网络日志