javascript实现一键复制文本功能

这篇具有很好参考价值的文章主要介绍了javascript实现一键复制文本功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近小编做了一键复制文本的需求(功能如下图所示)。本文简单介绍两种javascript实现文本复制(将文本写入剪贴板)的方法——navigator.clipboarddocument.execCommand(),大家可以根据需求特点选用。

js 复制文本,javascript,前端,开发语言

一、navigator.clipboard 对象

1. navigator.clipboard 方法汇总

方法 用途
Clipboard.readText() 复制剪贴板里的文本数据
Clipboard.read() 复制剪贴板里的文本数据/二进制数据
Clipboard.writeText() 将文本内容写入剪贴板
Clipboard.write() 将文本数据/二进制数据写入剪贴板

2. 代码示例

方法 1: Clipboard.writeText(), 用于将文本内容写入剪贴板;
    document.body.addEventListener("click", async (e) => {
      await navigator.clipboard.writeText("Yo");
    });
方法 2: Clipboard.write(), 用于将文本数据/二进制数据写入剪贴板

Clipboard.write()不仅在剪贴板可写入普通text,还可以写入图片数据(Chrome浏览器仅支持png格式)。

 async function copy() {
   const image = await fetch("kitten.png");
   const text = new Blob(["Cute sleeping kitten"], { type: "text/plain" });
   const item = new ClipboardItem({
     "text/plain": text,
     "image/png": image,
   });
   await navigator.clipboard.write([item]);
 }

3. 优缺点

① 优点
  • 所有操作都是异步的,返回 Promise 对象,不会造成页面卡顿;
  • 无需提前选中内容,可以将任意内容(比如图片)放入剪贴板;
② 缺点: 允许脚本任意读取会产生安全风险,安全限制较多。
  • Chrome 浏览器规定,只有 HTTPS 协议的页面才能使用这个 API;
  • 调用时需要明确获得用户的许可。

二、document.execCommand() 方法

1. document.execCommand() 方法汇总

方法 用途
document.execCommand(‘copy’) 复制
document.execCommand(‘cut’) 剪切
document.execCommand(‘paste’) 粘贴

2. 代码示例

document.execCommand('copy'),用于将已选中的文本内容写入剪贴板。

结合 window.getSelection()方法实现一键复制功能:

    const TestCopyBox = () => {
    const onClick = async () => {
    const divElement = document.getElementById("select-div");
    if (window.getSelection) {
    const selection = window.getSelection();
    const range = document.createRange();
    range.selectNodeContents(divElement);
    selection.removeAllRanges();
    selection.addRange(range);
    }
    document.execCommand("copy");
    };
    return <div>
     <button onClick={onClick}>copy</button>
     <div id="select-div"> <input /> <span>test2: 3</span><span>test3: 94</span></div>
    </div>
    };

3. 优缺点

① 优点
  • 使用方便;
  • 各种浏览器都支持;
② 缺点
  • 只能将选中的内容复制到剪贴板;
  • 同步操作,如果复制/粘贴大量数据,页面会出现卡顿。

参考与感谢

js 复制文本,javascript,前端,开发语言

  • 剪贴板操作 Clipboard API 教程

  • js 点击div元素全选元素上的文字内容文章来源地址https://www.toymoban.com/news/detail-605508.html

到了这里,关于javascript实现一键复制文本功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (简单成功)原生js实现点击复制文本

    目录 背景 核心代码 案例 我们开发中可能会有点击复制的功能,那么下面将讲述 select() 方法用于选择该元素中的文本。 document.execCommand(\\\'copy\\\') 执行浏览器复制命令

    2024年02月12日
    浏览(48)
  • uniapp 中一键复制文本,设置文本可以复制

    复制到剪贴板的效果 要文字换行处理,使用模板字符,字符不要换行 使用 n 来换行 复制的效果: 复制成功后 会弹出提示图标 文本使用 text 标签包裹 并且设置属性 selectable=\\\"true\\\"

    2024年02月12日
    浏览(34)
  • 使用JavaScript和Vue.js框架开发的电子商务网站,实现商品展示和购物车功能

    引言: 随着互联网的快速发展和智能手机的普及,电子商务行业正迎来一个全新的时代。越来越多的消费者选择网上购物,而不再局限于传统的实体店。这种趋势不仅仅是改变了消费者的习惯购物,也给企业带来了巨大的商机。为了不断满足消费者的需求,电子商务网站需要

    2024年02月15日
    浏览(59)
  • JavaScript实现点击复制(JS访问剪贴板相关)

    一、具体代码 ​ 网页前端开发中有时会出现这样的场景:让用户点击某个按钮,然后就能直接复制对应的文本内容,让用户可以将文本内容粘贴到想要粘贴的地方,常用于分享功能模块中。如果想要实现这种效果就需要我们去访问用户的剪贴板,然后把想要复制的内容写入

    2024年02月11日
    浏览(41)
  • vue中js实现点击复制文本到剪贴板-三种方案

    因为在网上找了一些很杂乱 不适用 所以自己写一篇记录分享一下 vue中js实现点击复制文本到剪贴板-三种方案 效果: 首先,我们需要安装clipboard库,它是一个轻量级的JavaScript库,用于复制/粘贴文本到剪贴板。 命令行运行npm install clipboard --save进行安装。 使用该库实现代码如

    2024年02月14日
    浏览(42)
  • JS复制粘贴功能实现

    本章记录如何通过js代码实现复制内容到剪切板,之后可以粘贴到需要的地方的功能。 分为两个部分内容: 前两个部分使用execCommand方法,该方法现在被弃用(ps:虽然也还可以用就行了), 且对于单行内容的复制需要结合input标签实现,多行内容的复制需要结合textarea标签实现。

    2024年02月12日
    浏览(43)
  • 前端实现复制的功能

    第一种情况: 点击复制按钮,实现文本的复制或者其他内容的复制,下边我是将复制的内容当成了参数,进行的操作。 button @click=\\\"copy(\\\'这是一段内容\\\')\\\" 复制/button // 复制的方法 copy (value) {         //创建input标签         var input = document.createElement(\\\'input\\\')         

    2024年02月09日
    浏览(37)
  • vue2 使用pdf.js 实现pdf预览,并可复制文本

            需求:pdf预览,并且可以选中pdf的内容进行复制。                 在ruoyi的vue前端项目中用到,参考了网上不少文章,因为大部分没给具体的pdf.js版本,导致运行过程中报各种api 错误,经过尝试以下版本可用,故记录一下:         安装依赖:         vue 页面

    2024年01月19日
    浏览(58)
  • RSAUtil 前端 JavaScript JSEncrypt 实现 RSA (长文本)加密解密

    文章归档:https://www.yuque.com/u27599042/coding_star/cl4dl599pdmtllw1 import JSEncrypt from ‘jsencrypt’ import {stringIsNull} from “@/utils/string_utils.js”:https://www.yuque.com/u27599042/coding_star/slncupw7un3ce7cb import {isNumber} from “@/utils/number_utils.js”:https://www.yuque.com/u27599042/coding_star/tuwmm3ghf5lgo4bw 注意: 此方

    2024年04月22日
    浏览(69)
  • uniapp - 全平台兼容实现上传图片带进度条功能,用户上传图像到服务器时显示上传进度条效果功能(一键复制源码,开箱即用)

    uniapp小程序/h5网页/app实现上传图片并监听上传进度,显示进度条完整功能示例代码 一键复制,改下样式即可。

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包