vue移动端复制功能

document.execCommand('copy')返回false是为什么?只有在ios会这样。

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7439346
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:vue实现购物车功能
  • 除此之外, 这篇博客: Vue实现搜索功能中的 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先上图演示一下,菜单列表显示的搜索功能:
    在这里插入图片描述这里介绍一下应用到的v-model:双向数据绑定,常用于表单元素例如input元素。

    <template>
      <div id="alarmlist">
        <header>
          <div id="header_input">
            <input type="text" placeholder="请输入搜索内容" v-model="search" id="search-input">
          </div>
        </header>
        <div id="content">
                <table v-for="warn in warnList"  id="table-show">
                  <tr>
                    <td class="headline" colspan="2">
                      <router-link v-if="warn.dealResult == '已处理'" :to="{ path: '/AlarmTreated',query: {warn:warn}}">
                      这是{{warn.id}}告警信息
                      </router-link>
                      <router-link v-else="warn.dealResult == '未处理'" :to="{ path: '/AlarmUntreated',query: {warn:warn}}">
                      这是{{warn.id}}告警信息
                      </router-link>
                    </td>
                  </tr>
                  <tr>
                    <td class="show-namewarn-time">
                      <div>电站名称:山东高密</div>
                      <div>告警时间:{{warn.warn_time}}</div>
                    </td>
                  </tr>
                  <tr>
                    <td colspan="2">告警信息:{{warn.name}}</td>
                  </tr>
                  <tr>
                    <td  colspan="2">
                      处理状态:
                      <button id="btn-stat">
                          {{warn.dealResult}}
                      </button>
                    </td>
                  </tr>
                </table>
        </div>
      </div>
    </template>
    
    export default {
        data() {
          return {
            nList: [],
            search: '', //初始化数据为空
          }
        },
        created() {//创建完成以后请求数据
          this.getData();
        },
        computed : {
          //搜索功能函数
          warnList: function() {	//数据源定义一个函数
            var search = this.search;	//定义search保存input输入的数据
            if (search) {				//判断search里面的数据
              return this.nList.filter(function(product) {//这里返回的nlist是通过get获取的数据
                return Object.keys(product).some(function(key){
                  return String(product[key]).toLowerCase().indexOf(search) > -1
                })
              })
            }
            return this.nList;	//返回nlist数据
          }
        },
        methods: {
          getData(){      //获取数据(这里只是我调用的接口的获取方式,只要能获取接口即可)
            let Message = this.pageSize + this.search + this.pageIndex;
            let key = 'H@ppy1@3';
            let hash = Cryptojs.HmacSHA256(Message, key).toString();
            let sign = this.$MD5(hash).toUpperCase();
            let formData = new FormData();
            formData.append('index', this.pageIndex);
            formData.append('num', this.pageSize);
            formData.append('sign', sign);
            formData.append('name', this.search);
            request({
              url: '/interface/Warns',
              method: 'POST',
              headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'token': this.Token,
                'platform': 'a'
              },
              data: formData
            }).then(res => {
              let data = res.data.data.list;
              let newList = [];		//接口中有很多字段,这里只去id,name,detail等字段
              data.map(item=>(
                      newList.push({
                        id:item.id,
                        name:item.name,
                        detail:item.detail,
                        r_id:item.r_id,
                        dealResult: item.dealResult,
                        reason: item.reason,
                        warn_time:item.warn_time
                      })
              ));
              this.nList = this.nList.concat(newList);  //将每次获取的数据拼接吗,由于我之前实现下拉加载,所以使用这条语句
              console.log(this.nList);
            }).catch(err => {
              console.log(err);
            })
          },
        }
      }
    </script>
    
  • 您还可以看一下 张子良老师的Vue移动端数据可视化项目实战课程中的 学习引导小节, 巩固相关知识点

参考下这个: http://t.csdn.cn/P1o3U


function newCopy(){
    $("#biao1").val("要复制的内容");//安卓
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
        var el = document.createElement('input');
        el.value = "要复制的内容";//要复制的内容
        el.style.opacity = '0';
        document.body.appendChild(el);
        var editable = el.contentEditable;
        var readOnly = el.readOnly;
        el.contentEditable = true;
        el.readOnly = false;
        const range = document.createRange();
        range.selectNodeContents(el);
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
        el.setSelectionRange(0, 999999);
        el.contentEditable = editable;
        el.readOnly = readOnly;
        var ret = document.execCommand('copy');
        el.blur();
        if(ret){
            alert("成功")
        }else{
            alert("失败")  
        }
    }else{
        var Url2=document.getElementById("biao1");
        Url2.select(); // 选择对象
        $("#biao1").blur();
        if(document.execCommand('copy', false, null)){
        var successful = document.execCommand('copy');
            alert("成功")
        }else{
            alert("失败")
        };
    }
}