zoukankan      html  css  js  c++  java
  • JS 复制文本兼容移动端 iOS & android

    有几个需要注意的地方。

    首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本。

    另外如果将 input 设置为 `type="hidden" 或者 display:none 则无法选中文本,也就无法复制,可以设置 position:absolute;left:-999px; 来隐藏文本域。

    静态复制

    const copyInput = document.querySelector('#copyInput');

    copyInput.value = '需要复制的文本'
    copyInput.select();
    document.execCommand('Copy');
     
    动态创建 input
    function copy(str) {
        const input = document.createElement("input");
        input.readOnly = 'readonly';
        input.value = str;
        document.body.appendChild(input);
        input.select();
        input.setSelectionRange(0, input.value.length);
        document.execCommand('Copy');
        document.body.removeChild(input);
    }
    function copyText(text) {
    var input = document.createElement("input");
    var currentFocus = document.activeElement;
    document.body.appendChild(input);
    input.readOnly = 'readonly';
    input.value = text;
    input.focus();
    if (input.setSelectionRange)
    input.setSelectionRange(0, input.value.length);
    else
    input.select();
    try {
    var flag = document.execCommand("copy");
    } catch (eo) {
    var flag = false;
    }
    input.blur();
    document.body.removeChild(input);
    currentFocus.focus();
    currentFocus.blur();
    return flag;
    }
     
    移动端禁止弹出输入键盘
    在 iOS 中 input 聚焦的时候会弹起键盘,对于复制操作交互体验很差,可以用以下方式禁止键盘的弹起。
    <input type="text" readonly="readonly" />
    <input type="text" onfocus="this.blur()" />
    const input = document.createElement("input");
         input.readOnly = 'readonly';
    $("#box").focus(function(){
        document.activeElement.blur();
    });
     
     
     
  • 相关阅读:
    C#获取上级文件夹路径
    C#string与byte数组转行
    C#BAT与VBS文件的创建和执行调用
    C#生成条形码
    C#根据生日计算所属十二星座
    C#获取某一字符串第N到第N+1空格的字符
    WPF的DataGrid表格动态加载合并列
    WPF递归设置CheckBox与TextBox禁用联动
    WPF基础知识
    WPF Popup绑定目标控件上下左右位置
  • 原文地址:https://www.cnblogs.com/FACESCORE/p/11238738.html
Copyright © 2011-2022 走看看