ajax异步复制文字到粘贴板上,IOS失效问题

提示:异步复制文字到剪切板


前言

ajax中执行复制文字,ios失效试错过程

一、遇到的问题,ios异步ajax里执行复制文字到截切版不执行

	//复制文字到剪切板
    function copyText(text, callback){ // text: 要复制的内容, callback: 回调
       let tag = document.createElement('input');
       tag.setAttribute('id', 'copy_text_input');
       tag.value = text;
       document.getElementsByTagName('body')[0].appendChild(tag);
       document.getElementById('copy_text_input').select();
       document.execCommand('copy');
       document.getElementById('copy_text_input').remove();
       if(callback) {callback(text)}
   }
   //ajax调用
   $.ajax({
     type:'post',
      dataType: 'JSON',
      url: "xxx",
      data: {},
      success: function (res) {
          copyText(res.data)
      }
  });

二、解决方案

1、async: false,在setTimeout里调用复制文字的方法

//复制文字到剪切板
    function copyText(text, callback){ // text: 要复制的内容, callback: 回调
       let tag = document.createElement('input');
       tag.setAttribute('id', 'copy_text_input');
       tag.value = text;
       document.getElementsByTagName('body')[0].appendChild(tag);
       document.getElementById('copy_text_input').select();
       document.execCommand('copy');
       document.getElementById('copy_text_input').remove();
       if(callback) {callback(text)}
   }
   //ajax调用
   $.ajax({
       type:'post',
        dataType: 'JSON',
        async: false,
        url: "xxx",
        data: {},
        success: function (res) {
           setTimeout(()=>{
              copyText(res.data)
           },10);
        }
    });

三、试错过程

解决过程中遇到的······无效······方案,大神可以指点下未成功的原因!!!
1、触发ajax事件的标签改成button
2、ajax异步改成同步执行async: false。(有文章解释ios不支持ajax异步转同步);
3、navigator.clipboard

	navigator.clipboard.writeText('xxxx').then(() => { console.log('复制成功'); });

安卓报错-----无权限写入
在这里插入图片描述
4、使用clipboardJs

	//html
	<span style="display: none" class="copy_text_btn" data-clipboard-text=""></span>
	//js
     const clipboard = new ClipboardJS('.copy_text_btn');
     	clipboard .on('success', function(e) {
         console.log('success',e);
     });
     clipboard .on('error', function(e) {
         console.log('error',e);
     });
     $.ajax({
         type:'post',
         dataType: 'JSON',
         async: false,
         url: "xxx",
         data: {},
         success: function (res) {
             $('.copy_text_btn').attr('data-clipboard-text',res.data);
             $('.copy_text_btn').click();
         }
    });

安卓报错-----无权限写入
在这里插入图片描述

总结

踩坑路漫漫长@~@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值