JavaScript - 复制文本方法实现

Posted WHOVENLY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript - 复制文本方法实现相关的知识,希望对你有一定的参考价值。

一、实现原理

采用input或者textarea元素特有的select()方法,用于选中输入框的文本,再调用copy命令,将文本复制到剪切板,以实现复制文本的功能。

二、实现步骤

1.首先为展示文本的input元素,添加ref属性。

<input type="text" :value="code" ref="demoInput" readonly>

2.为【复制兑换码】按钮添加一个点击事件copy()。

<div class="btn" @click="copy()">复制兑换码</div>

3.书写copy()方法。

copy() {
let input = this.$refs["demoInput"];//获取元素
input.select();//通过 select() 方法,选中输入框的文本
//调用copy命令,将文本复制到剪切板
if (document.execCommand("copy")) {
    document.execCommand("copy");
    this.$toast("已复制");
    }
}

如果是使用input或者是textarea元素展示文本,则以上方法即可实现。

三、遇到的问题

问题:select() 方法只对和元素有效!!!如果页面不需要展示文本或者是不使用input或者textarea元素展示文本,则获取不到文本内容

解决办法:在页面中添加一个或者元素,并将该元素隐藏,这样就可以通过调用这个隐藏元素的select()去进行文本的获取了。

以下是我尝试的各种隐藏元素方法:
隐藏元素方式1:
diaplay:none
虽然元素确实不见了,但是它是真的不见了,完全消失了,所以此时你去获取元素是获得不到的,所以该方案pass。
隐藏元素方式2.0:
width:0; height:0;
使用该方式后,你以为元素不存在页面中了?不存在的,页面中依然有它的痕迹,所以该方案也pass。
隐藏元素方式2.1:
width:0; height:0 border: none;
使用该方式后,元素在页面中不显示了,但是依旧会占据一小块的地方,所以该方案虽然可行,但不完美。

隐藏元素方式3:使用定位,完美解决。
position: fixed; width: 5px; top: -6px; height: 0;

欢迎反馈文中表述不准确的地方或是不足之处~

以上是关于JavaScript - 复制文本方法实现的主要内容,如果未能解决你的问题,请参考以下文章

json数据解析转文本方法

C++ 读取 UTF-8 及 GBK 系列的文本方法及原理

canvas绘制文本

21 表单小练习

复制文本的方法都有哪些

javascript - 输入类型=收音机在更改文本时消失