zoukankan      html  css  js  c++  java
  • vue — 复制功能封装

    废话不多说,直接上代码

    handleCopyText({ topic }) {
    var input = document.createElement("input"); // js创建一个input输入框
    input.value = topic; // 将需要复制的文本赋值到创建的input输入框中
    document.body.appendChild(input); // 将输入框暂时创建到实例里面
    input.select(); // 选中输入框中的内容
    document.execCommand("Copy"); // 执行复制操作
    document.body.removeChild(input); // 最后删除实例中临时创建的input输入框,完成复制操作
    this.$message({
    message: "复制成功",
    type: "success"
    });
    },

    注意原生input有个select方法,就是选中的意思
    原生input方法:

    select(); 选中内容
    input.select();

    focus(); // 获取焦点
    input.focus();

    blur(); 失去焦点
    input.blur();

    selectionStart // 光标结束选中的位置
    input.selectionStart

    selectionEnd // 光标结束选中位置
    input.selectionEnd = 0;

    setSelectionRange(start, end); // 选中指定区域的内容
    input.setSelectionRange(0, 0);

    一、原理分析

    浏览器提供了 copy 命令 ,可以复制选中的内容
    document.execCommand("copy")

    如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用 copy 命令,将文本复制到剪切板

    但是 select() 方法只对 input 和 textarea 有效,对于 p 就不好使

    最后我的解决方案是,在页面中添加一个 textarea,然后把它隐藏掉

    点击按钮的时候,先把 textarea 的 value 改为 p 的 innerText,然后复制 textarea 中的内容

    二、代码实现

    HTML 部分:

    我把你当兄弟你却想着复制我?

    JS 部分:

    function copyText() {
    var text = document.getElementById("text").innerText;
    var input = document.getElementById("input");
    input.value = text; // 修改文本框的内容
    input.select(); // 选中文本
    document.execCommand("copy"); // 执行浏览器复制命令
    alert("复制成功");

  • 相关阅读:
    关于iOS中页面启动加载的相关问题汇总
    文件上传与解析漏洞
    XSS跨站攻击
    SQL注入
    DOS&&Linux命令大全
    信息收集相关
    进制转化
    PYQT5 in Python
    将博客搬至CSDN
    Python报文操作模块scapy
  • 原文地址:https://www.cnblogs.com/wufenfen/p/15601475.html
Copyright © 2011-2022 走看看