返回顶部
首页 > 资讯 > 前端开发 > JavaScript >使用clipboard.js库实现复制剪切功能
  • 714
分享到

使用clipboard.js库实现复制剪切功能

2024-04-02 19:04:59 714人浏览 薄情痞子
摘要

项目地址:https://GitHub.com/zenorocha/clipboard.js 现代化的“复制到剪切板”插件。不包含 Flash。gzip 压缩

项目地址:https://GitHub.com/zenorocha/clipboard.js

现代化的“复制到剪切板”插件。不包含 Flash。gzip 压缩后仅 3kb。

为什么使用它

复制文字到剪切板不应该很难去实现。它不需要配置几十个步骤或者加载几百 KB 的文件。最重要的是,它不应该依赖 Flash 或其他臃肿的框架

这是 clipboard.js 诞生的原因。

安装

你可以通过 npm 来安装它。

npm install clipboard --save

如果你不使用包管理,仅需要下载一个ZIP文件。

开始

首先,引入位于dist目录下的脚本文件,或者引入一个第三方CDN。

<script src="dist/clipboard.min.js"></script>

然后,你需要通过传入一个DOM 选择器,html 元素, 或者HTML 元素数组作为参数,来实例化对象。

new Clipboard('.btn');

本质上,我们需要获取所有选择器匹配到的元素,并为每一个选择器设置监听事件。但仔细想想,如果有成百上千个匹配到的元素,这样做会耗费大量内存。

因此,我们使用事件代理,通过一个事件监听器来取代多个事件监听。毕竟,性能是问题。

使用

我们正在经历一场声明式的复兴,这就是为什么我们决定利用HTML5data属性来提高可用性的原因。

从另一个元素复制文本

一个很常见的用例是从另一个元素复制内容。你可以给目标元素添加一个data-clipboard-target属性来实现这个功能。

这个属性的值就是能匹配到另一个元素的选择器。

<!-- Target -->
<input id="foo" value="Https://github.com/zenorocha/clipboard.js.git">

<!-- Trigger -->
<button class="btn" data-clipboard-target="#foo">
    <img src="assets/clippy.svg" alt="Copy to clipboard">
</button>

从另一个元素剪切文本

此外,你可以定义一个data-clipboard-action属性来指明你想要复制(copy)还是剪切(cut)内容。

如果你省略这个属性,则默认为复制(copy)。

<!-- Target -->
<textarea id="bar">Mussum ipsum cacilds...</textarea>

<!-- Trigger -->
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">
    Cut to clipboard
</button>

正如你所预料的,剪切(cut)动作只在<input><textarea>元素起作用。

从属性复制文本

事实上,你甚至不需要从另一个元素来复制内容。你仅需要给目标元素设置一个data-clipboard-text属性就可以了。

<!-- Trigger -->
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js">
    Copy to clipboard
</button>

事件

如果你想要展示一些用户反馈,或者在用户复制/剪切后获取已经选择的文字,这里有个示例供你参考。

我们通过触发自定义事件,例如successerror,让你可以设置监听并实现自定义逻辑。

var clipboard = new Clipboard('.btn');

clipboard.on('success', function(e) {
    console.info('Action:', e.action);
    console.info('Text:', e.text);
    console.info('Trigger:', e.trigger);

    e.clearSelection();
});

clipboard.on('error', function(e) {
    console.error('Action:', e.action);
    console.error('Trigger:', e.trigger);
});

你可以访问这个网站,打开控制台,查看演示示例。

工具提示(Tooltips)

每个应用有着不同的设计需求,这是为什么 clipboard.js 没有包含任何 CSS 或内置的工具提示解决方案。

你在示例网站看到的工具提示是通过GitHub's Primer构建的。如果你正在寻找一个外观和体验类似的库,你可以去看看这个项目。

高级选项

如果你不想修改 HTML,我们提供了一个非常方面的命令式的 api 给你使用。你需要做的就是声明一个函数,做一些处理,并返回一个值。

例如,如果你希望动态设置target,你需要返回一个节点(node).

new Clipboard('.btn', {
    target: function(trigger) {
        return trigger.nextElementSibling;
    }
});

如果你希望动态设置text,你需要返回一个字符串

new Clipboard('.btn', {
    text: function(trigger) {
        return trigger.getAttribute('aria-label');
    }
});

如果在 Bootstrap 模态框(Modals)中使用,或是在其他修改焦点的类库中使用,你会希望将获得焦点的元素设置为container属性的值。

new Clipboard('.btn', {
    container: document.getElementById('modal')
});

同样地,如果你使用单页应用,你可能想要更加精确地管理 DOM 的生命周期。你可以清理事件以及创建的对象。

var clipboard = new Clipboard('.btn');
clipboard.destroy();

浏览器支持

这个库依赖于Selection和execCommand的 API。前者兼容所有的浏览器,后者兼容以下浏览器。

好消息是,如果你需要支持旧浏览器,clipboard.js 可以优雅降级。你所要做的就是在success事件触发时提示用户“已复制!”,error事件触发时提示用户“按 Ctrl+C 复制文字”(此时用户要复制的文字已经选择了)。

你也可以通过运行Clipboard.isSupported()来检查浏览器是否支持 clipboard.js,如果不支持,你可以隐藏复制/剪切按钮。

到此这篇关于clipboard.js实现复制剪切功能的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 使用clipboard.js库实现复制剪切功能

本文链接: https://lsjlt.com/news/152670.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用clipboard.js库实现复制剪切功能
    项目地址:https://github.com/zenorocha/clipboard.js 现代化的“复制到剪切板”插件。不包含 Flash。gzip 压缩...
    99+
    2024-04-02
  • 如何使用clipboard.js库实现复制剪切功能
    这篇文章主要介绍“如何使用clipboard.js库实现复制剪切功能”,在日常操作中,相信很多人在如何使用clipboard.js库实现复制剪切功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用cli...
    99+
    2023-07-02
  • js 剪切、复制、粘贴功能实现
    针对现代浏览器实现(Navigator.clipboard) Navigator.clipboard API可以用来访问系统剪贴板,可以实现【剪切、复制、粘贴】功能。该 API 被设...
    99+
    2023-05-18
    js 剪切 js复制 js粘贴
  • node.js实现复制文本到剪切板的功能
    前言 最近在工作中遇到一种需求:我需要请求后端数据,但请求数据前需要登陆,获得一个token。登陆方式是向一个json地址post数据即可。之前我的做法是,用chrome插件postman来实现登陆动作。但...
    99+
    2022-06-04
    文本 功能 剪切板
  • android实现文本复制到剪切板功能(ClipboardManager)
    注意:导包的时候 API 11之前: android.text.ClipboardManagerAPI 11之后: android.content.ClipboardManag...
    99+
    2022-06-06
    Android
  • android 复制 粘贴 剪切功能应用
    网上有很多复制粘贴的文章,只是放到自己的程序中不知道如何处理,现在寻得一可行方法如下: Android的剪切板(ClipboardManager) 注意:导包的时候 API 1...
    99+
    2022-06-06
    粘贴 Android
  • QT圆形图像剪切功能实现
    剪切代码: Rectangle{ id:idRectRound width: 250 ...
    99+
    2022-11-13
    qt图像剪切 qt圆形剪切
  • 使用js实现复制功能
    本文实例为大家分享了使用js实现复制功能的具体代码,供大家参考,具体内容如下 复制 1.遍历复制(for in) 特征:不修改引用关系(原来的属性还在),仅能复制字符属性,Symbo...
    99+
    2024-04-02
  • JS如何实现复制内容到剪贴板功能
    这篇文章主要为大家展示了“JS如何实现复制内容到剪贴板功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现复制内容到剪贴板功能”这篇文章吧。前记:本来...
    99+
    2024-04-02
  • 怎么在Html5中实现一个剪切板功能
    这期内容当中小编将会给大家带来有关怎么在Html5中实现一个剪切板功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.不带input输入框的原生js方法这种情况适用于复制非输入框中的文本到剪切板&nbs...
    99+
    2023-06-09
  • C#使用Clipboard类实现剪贴板功能
    剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。 不过剪贴板也有限制,它在某个特定的时间只能指向一块...
    99+
    2024-04-02
  • vue中如何实现复制内容到剪切板详解
    目录1. element-ui的el-table实现双击复制单元格的内容到剪切板1. 在el-table中添加双击响应事件2. 在methods中添加双击绑定的copyText方法2...
    99+
    2022-11-13
    vue 复制到剪切板 vue实现复制功能 vue复制指定内容到剪切板
  • 使用VUE实现一键复制内容功能
    接到一个需要,需要在pc端实现一键复制粘贴功能,如图所示: 当我点击复制按钮时,会提示“复制成功”,这样复制的内容就可以在其他地方使用了 具体实现方法如下:...
    99+
    2023-05-17
    VUE 复制 VUE 实现复制
  • 在Java项目中使用IO流实现一个音频剪切和拼接功能
    今天就跟大家聊聊有关在Java项目中使用IO流实现一个音频剪切和拼接功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。需求: 使用IO流将指定目录下的若干个音频文件的高潮部分,进行剪...
    99+
    2023-05-31
    java io流 ava
  • node.js(express)中使用Jcrop进行图片剪切上传功能
    需求说明 简单来说就是要实现用户上传头像,并且要保存用户裁切后的部分作为用户头像。 第一步,选择图片: 第二步,在弹窗页面中展现并进行裁切: 第三步,点击“保存”,上传服务器。 实现过程 说来有点坎...
    99+
    2022-06-04
    上传 功能 图片
  • Android使用ViewFlipper实现图片切换功能
    今天给大家简单的讲一下Android手势,目前市场上的App中手势的运用比较少。 Android提供了两种手势: ①.Android提供了手势检测,并为手势检测提供了相应的监听器 ②.Android允许开发者添加手势,并提供了相应的API识...
    99+
    2023-05-30
    android viewflipper 图片切换
  • vuejs如何实现复制功能
    这篇文章主要讲解了“vuejs如何实现复制功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vuejs如何实现复制功能”吧!vuejs实现复制功能的方法:1、创建一个copyComm.js的...
    99+
    2023-06-25
  • JavaScript+Html5怎么实现按钮拷贝文字到剪切板功能
    这篇文章给大家分享的是有关JavaScript+Html5怎么实现按钮拷贝文字到剪切板功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用的方法:clipboard插件下载地址...
    99+
    2024-04-02
  • 如何使用Python通过获取剪切板数据实现百度划词搜索功能
    小编给大家分享一下如何使用Python通过获取剪切板数据实现百度划词搜索功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、实现划词功能说是划词翻译,实际上我们...
    99+
    2023-06-15
  • 怎么使用PHP实现数据库主从复制故障切换
    今天小编给大家分享一下怎么使用PHP实现数据库主从复制故障切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、主从复制的基...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作