安卓和iOS复制内容到剪切板

写在前面:

产品需求为了实现用户点击按钮后复制指定内容到手机的剪切板。
其主要思路在于将内容赋值给input或者textarea标签,然后选中其内容,在执行document.execCommand函数。

局限性:

如上面所言,核心主要在于execCommand函数,该函数在一些系统下的兼容性并不理想。
Ios在10.3版本以上效果较好,安卓兼容性可参考官网:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand

此外,还有一点局限在于,由于浏览器的安全机制限制,页面需要用户点击后才能够利用脚本实现复制到剪切板的功能,就算模拟点击也暂时无法实现。因此需要引导用户进行页面上的点击。

安卓实现:

function andCopy(){
        try {
            if (document.execCommand('copy', false, null)) {
                var str = '要复制的内容';

                var $input = $('<input id="input_dis"/>');
                $input.val(str);
                $('#addInput').append($input);
                var el = $input.get(0);
                el.focus();
                el.setSelectionRange(0, el.value.length);
                document.execCommand('copy', true);
                $input.blur();

                $('body').find('#input_dis').remove();
            }
        } catch (err) {

        }

    }

Ios实现:

function copyParam() {
        try{
            var str = '要复制的内容';

            var $input = $('<input id="input_dis"/>');
            $input.val(str);
            $('#addInput').append($input);
            var el = $input.get(0);
            var editable = el.contentEditable;
            var readOnly = el.readOnly;
            el.contentEditable = true;
            el.readOnly = true;
            var 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;
            document.execCommand('copy');
            $input.blur();

            $('body').find('#input_dis').remove();
        }catch (err){

        }

}

网上有很多关于复制剪切板内容的代码,在此仅作为记录,有问题还请多批评指正。谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GJWeigege

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值