美文网首页
钉钉内部实现复制粘贴功能

钉钉内部实现复制粘贴功能

作者: 追风筝的Hassan | 来源:发表于2019-05-16 14:12 被阅读0次

    上一章遗留问题钉钉端内部跳转到外部链接,无法正常返回的问题,如果遇到跳转的页面需要登录才能进入的网址,就会陷入死循环永远也无法退出,只能关闭应用重新进入。

    处理办法:转换思路,给url字段重新加上复制粘贴的按钮,让用户自己复制之后粘贴到浏览器中进行访问,虽然用户体验不太好,目前为止只能这么解决。

    复制粘贴的三种实现方式:

    #利用vue中的粘贴板功能,点击按钮后进行复制
    #首先安装Clipboard的复制版,npm install --save clipboard
    #然后在页面中引入import Clipboard from 'clipboard'
     <p v-if='basic.value'>{{formatValue(basic)}}</p>
     <button type="primary"
                  plain
                 v-if='basic.value'
                class='tag-read'
               @click="copyUrl(basic.value)">复制链接</button>
    #在methods中
     copyUrl (data) {
          var Url = data
          var clipboard = new Clipboard('.tag-read', {
            text: function () {
              return Url
            }
          })
          clipboard.on('success', e => {
            this.$toast.success('复制成功!')
            // 释放内存
            clipboard.destroy()
          })
          clipboard.on('error', e => {
            // 不支持复制
            this.$toast.fail('复制失败!')
            // 释放内存
            clipboard.destroy()
          })
        },
    

    上面这种方法在PC端没有任何问题,但是在钉钉开发不适用,不能正常复制,猜测钉钉内部做了拦截

    #第二种方法利用js实现复制功能
     <p v-if='basic.value'>{{formatValue(basic)}}</p>
     <button type="primary"
                  plain
                 v-if='basic.value'
               @click="copyUrl(basic.value)">复制链接</button>
    copyUrl(data){
            let url = data;
            let oInput = document.createElement('input');
            oInput.value = url;
            document.body.appendChild(oInput);
            oInput.select(); // 选择对象;
            console.log(oInput.value)
            document.execCommand("Copy"); // 执行浏览器复制命令
            this.$message({
              message: '已成功复制到剪切板',
              type: 'success'
            });
            oInput.remove()
          },
    
    

    这种方法也是只能早浏览器上进行粘贴,在钉钉内部显示复制成功,但是并不能真正粘贴到浏览器上,并且该种方法复制成功之后,点击返回按钮,会在背的页面上留下一个输入框,目前未找到问题,有知道的小伙伴可以留言或私信给我,谢谢

    所以怎么办,还是要回归到钉钉,这也是我的一个不好习惯,总是第一时间去搜百度,必应,没有查看官方文档,其实人家有自己的复制粘贴功能,你只需要利用

     dd.biz.clipboardData.setData({
            text: data, // 要复制粘贴板的内容
            onSuccess: (result) => {
              this.$toast.success('复制成功!')
            },
            onFail: () => {
              this.$toast.fail('复制失败!')
            }
          })
    

    搞定!!!

    敲黑板!!!一定要先查看官方文档,很重要

    相关文章

      网友评论

          本文标题:钉钉内部实现复制粘贴功能

          本文链接:https://www.haomeiwen.com/subject/zgfiaqtx.html