vue实现分享功能

分享 复制路径到剪贴板

最近项目中需要做文件分享的功能,特在此做一下记录,希望给相同需求的码友一个参考
项目整体代码
<div @click="controlsBtn()" >
  <span>分享</span>	
</div>
<el-dialog :title="title" :visible.sync="dialogShareVisible">
  <div class="breadcrumb">
    <span>分享地址:{{ shareData }}</span>
    <el-button @click="copyText(shareData)">复制地址</el-button>
  </div>
  <div slot="footer" class="dialog-footer">
    <el-button @click="cancelShare" >关 闭</el-button>
  </div>
</el-dialog>
// 接口 根据项目
import { shareSubmit } from '@/modules/ossClient/api/ossWebApi'
export default {
  data () {
    return {
    	title: '分享',
    	dialogShareVisible: false,
    	controlsList: [], // 多选批量分享的时候会用到
		shareData: '',
	}
  },
  methods: {
	async controlsBtn () {
	   this.dialogShareVisible = true
	    const ids = []
	    if (item?.id) {
	      ids.push(item?.id)
	    } else if (this.controlsList.length) {
	      this.controlsList.forEach((item) => {
	        ids.push(item.id)
	      })
	    }
	    const res = await shareSubmit(ids.join(','))
	    const urlWithoutParams = window.location.origin
	    this.shareData = urlWithoutParams + res.data.data
	},
	copyText(text){
	   const isClipboardApiSupported = window.navigator && window.navigator.clipboard
	   if (isClipboardApiSupported) {
	     window.navigator.clipboard.writeText(text)
	   } else {
	     const textarea = document.createElement('textarea')
	     textarea.readOnly = true
	     textarea.value = text
	     textarea.style.position = 'absolute'
	     textarea.style.top = '-9999px'
	     textarea.style.left = '-9999px'
	     document.body.appendChild(textarea)
	     textarea.select()
	     document.execCommand('copy')
	     textarea.remove()
	   }
	}
  }
}
复制文本到剪贴板的核心方法
copyText(text){
   // Whether to support navigator.clipboard attribute
   const isClipboardApiSupported = window.navigator && window.navigator.clipboard
   if (isClipboardApiSupported) {
     window.navigator.clipboard.writeText(text)
   } else {
     const textarea = document.createElement('textarea')
     textarea.readOnly = true
     textarea.value = text
     textarea.style.position = 'absolute'
     textarea.style.top = '-9999px'
     textarea.style.left = '-9999px'
     document.body.appendChild(textarea)
     textarea.select()
     document.execCommand('copy')
     textarea.remove()
   }
}

可以将需要分享的链接复制到剪贴板,然后发送给需要的小伙伴,关于分享页面的内容,将在下篇描述,感兴趣的码友,可以查看链接: 文件分享下载页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值