安卓和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
    评论
安卓iOS的输入框兼容性问题主要涉及以下几个方面: 1. 键盘样式:安卓iOS的键盘样式有所不同,包括键盘的外观和布局。在开发过程中,应该针对不同平台设计相应的布局和样式。 2. 输入事件:安卓iOS的输入事件处理方式也有差异。在安卓上,通常使用EditText控件来处理输入,而iOS上则使用UITextField控件。开发时需要注意事件的注册和处理方式。 3. 输入类型:安卓iOS的输入类型也有差异,例如数字、文本、密码等。在定义输入框时,需要根据实际需求设置相应的输入类型,以确保输入的准确性和用户体验。 4. 软键盘弹出:安卓iOS在软键盘弹出时的行为也有所不同。在安卓上,软键盘通常会覆盖输入框,需要自行处理页面内容的滚动以保证输入框可见;而在iOS上,系统会自动调整页面布局以确保输入框可见。开发时需要注意对软键盘弹出事件的处理。 为了解决安卓iOS的兼容性问题,可以采取以下一些措施: 1. 使用响应式布局:使用相对布局或者约束布局等响应式布局方式,可以根据不同平台的需求自动调整布局。 2. 使用平台相关的输入控件:在安卓iOS上分别使用EditText和UITextField等平台相关的控件,可以更好地适配不同平台的样式和行为。 3. 使用平台相关的事件处理方式:根据不同平台的事件处理方式,编写对应的代码逻辑,以确保输入事件能够正确响应。 4. 使用平台相关的属性设置:根据不同平台的属性设置,比如输入类型、软键盘行为等,调整相应的属性值。 总之,了解安卓iOS之间的兼容性差异,并采取相应的措施进行适配,能够更好地处理输入框兼容性问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GJWeigege

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

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

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

打赏作者

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

抵扣说明:

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

余额充值