基本知识
知识点1:复制文本内容
- vue中提供了vue-clipboard2是前端能够调用剪切板的一个插件。
知识点2:移动端拉起本地短信功能,并填充内容
- 安卓
sms:?body=内容
- 苹果
sms:&body=内容
问题:
针对苹果系统:
当内容中携带链接时,而链接需要携带多个参数时,我们正常的思维是用多个&连接参数,但是这存在问题,尝试后发现&及其后的内容缺失。
解决方法:将&用%26代替,然后再使用encodeURIComponent方法编译一下。
亲测有效,具体参考代码如下:
import VueClipboard2 from 'vue-clipboard2'
Vue.use(VueClipboard2)
// 粘贴消息至本地短信模板
copyToSendMsg () {
// 判断环境
const u = navigator.userAgent
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
console.log('isAndroid', isAndroid)
console.log('isIOS', isIOS)
// 组合数据
const originMessage = '您好,下面是跳转链接:'
const url = 'https://test.cn/xxx/#/tip'
const paramsAndroid = '?info=hello%26type=2' // 安卓环境,&需要用%26替代,后面再encode一下,才能正确触发
const paramsIOS = '?info=hello&type=2' // ios环境, &可以直接写
let message = ''
if (isAndroid) {
message = originMessage + '\n' + encodeURIComponent(url + paramsAndroid)
} else if (isIOS) {
message = originMessage + '\n' + encodeURIComponent(url + paramsIOS)
}
// 复制内容,然后拉起短信功能
this.$copyText(message).then(e => {
Toast('复制成功,请至短信中粘贴')
setTimeout(() => {
if (isAndroid) {
window.location.href = 'sms:?body=' + message
} else if (isIOS) {
window.location.href = 'sms:&body=' + message
}
}, 200)
}, () => {})
}