vue 复制,writeText被禁用 undefined

注意 navigator.clipboard.writeText可能会被浏览器禁用,还是需要使用兼容的  document.execCommand('copy') 

    //navigator.clipboard.writeText可能会被浏览器禁用
    copy() {
      // navigator clipboard 需要https等安全上下文
      if (navigator.clipboard && window.isSecureContext) {
        // navigator clipboard 向剪贴板写文本
        navigator.clipboard.writeText(this.resourceContent)
        this.successMsgBox('复制成功')
      } else {
        // 创建text area
        let textArea = document.createElement('textarea')
        textArea.value = this.resourceContent
        // 使text area不在viewport,同时设置不可见
        textArea.style.position = 'absolute'
        textArea.style.opacity = 0
        textArea.style.left = '-999999px'
        textArea.style.top = '-999999px'
        document.body.appendChild(textArea)
        textArea.focus()
        textArea.select()
        return new Promise((res, rej) => {
          // 执行复制命令并移除文本框
          document.execCommand('copy') ? res('复制成功') : rej('复制失败')
          textArea.remove()
        })
          .then((res) => {
            // 从 resolve 获取正常结果
            console.log(res)
            this.successMsgBox(res)
          })
          .catch((res) => {
            // 从 reject 获取异常结果
            console.log(res)
            this.successMsgBox(res)
          })
      }
    },

更多资源访问:代码资源

你可能感兴趣的:(vue.js,javascript,前端)