Clipboard 自动复制功能,ios复制失败,换方案 user-select: text ;长按复制 (ios 兼容,长按复制)

Posted 假装学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clipboard 自动复制功能,ios复制失败,换方案 user-select: text ;长按复制 (ios 兼容,长按复制)相关的知识,希望对你有一定的参考价值。

Clipboard 自动复制功能,嵌套app内跳转的页面,ios 自动复制失败(该ios机子,微信,浏览器打开复制没有问题)
暂时换方案    user-select: text ;长按复制 (ios 兼容低版本,长按复制)   
 
最好的 方案是让 app 给出原生复制的 方法。直接调用 可 自动复制
 
 
 <div class="item-detail">
                  <div class="line" style>
        <!-- user-select: text !important;  可复制文字  -->
                    <div style="user-select: text !important;">订单编号:{{item.order_no}}</div>
                    <div class="line" >原因:{{item.refuse}}</div>
                  </div>
                  <div>
                    <button
                      class="tag-read"
                      @click="copyText(item.order_no)"
                      style="cursor: pointer"
                      id="foo"
                      data-clipboard-action="copy"
                      :data-clipboard-text="item.order_no"
                    >复制单号</button>
                  </div>
                </div>

<script>
import Clipboard from "clipboard";
export default {
  name: "order",
  data() {
    return {
   
      orderData: [],
      pageVal: 1,
      pageSize: 10,
      pageTotal: 0,
      loading: true,
      isLoading: false,
      form: {
        user_id: this.$route.query.user_id,
        status: 0,
        pageIndex: 1
      }
    };
  },
  created() {
    this.form.pageIndex = 0;
    this.orderData = [];
  },
  methods: {
    /* eslint-disable */
    getList() {
      var order = [];
      this.$api.order(this.form).then(res => {
        if (!res.success) {
          util.toast(res.msg);
        } else if (res.data) {
          order = res.data.data.data;
          order.forEach(item => {
                      this.orderData.push(item);
          });
          this.dataTotal = res.data.data.dataTotal;
          this.pageSize = res.data.data.pageSize;
          this.pageTotal = res.data.data.pageTotal;

          this.loading = true; // 当还有多余的数据时,将无限滚动给打开 ,就是可以继续滚动去请求后台
          this.isLoading = true;
          if (this.pageTotal == this.form.pageIndex) {
            this.loading = false;
            this.isLoading = false;
          }
          if (this.pageTotal == 0) {
            this.cardListEmpty = true;
          }
        } 
      });
    },
    copyText(text) {
      var clipboard = new Clipboard(".tag-read", {
        text: function(trigger) {
          return text; // 返回需要复制的内容
        }
      });
      clipboard.on("success", e => {
        util.toast("复制成功!");
        // 释放内存
        clipboard.destroy();
      });
      clipboard.on("error", e => {
        // 不支持复制
        util.toast("请长按进行手动复制!");
        // 释放内存
        clipboard.destroy();
      });
    },
 
    loadMore() {
      if (this.pageTotal == this.form.pageIndex && this.form.pageIndex != 0) {
        this.loading = false; // 将无限滚动关闭
        this.isLoading = false;
        return;
      }
      setTimeout(() => {
        //发送请求有时间间隔第一个滚动时间结束后才发送第二个请求
        this.form.pageIndex++;
        this.getList();
      }, 500);
    },
};
</script>
 
// 父元素加个-webkit-user-select:text;才有效,单独子元素即使加-webkit-user-select:text!important也无效
<style lang="scss" scoped>
.item-detail {
  -webkit-user-select: text;
  -moz-user-select: text;
  -o-user-select: text;
  -ms-user-select: text;
  user-select: text;
}
</style>
 

以上是关于Clipboard 自动复制功能,ios复制失败,换方案 user-select: text ;长按复制 (ios 兼容,长按复制)的主要内容,如果未能解决你的问题,请参考以下文章

clipboard.js在弹出框中无法复制的问题

点击复制功能 封装

clipboard.js-复制文本到粘贴板

VB中如何实现复制粘贴?

用VB实现复制粘贴

自动复制文本到剪贴版(Auto Copy to clipboard)