我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JS怎么实现粘贴板功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JS怎么实现粘贴板功能

小编给大家分享一下JS怎么实现粘贴板功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

使用剪贴板是一项基本技能。作为码农都应知道,Tab,Ctrl/Cmd + A,Ctrl / Cmd + C以及Ctrl / Cmd + V分别是自动聚焦、复制、粘贴的快捷键。

而对普通用户可能就不太容易了。即使用户知道剪贴板是什么,(除了)那些眼神极好或反应很快的人,其他情况下很难以突出显示他们想要的确切文字。若用户不知道键盘快捷键,也看不到隐藏的编辑菜单,或从未使用右键菜单或不知道长按触屏弹出选项菜单,那么他很可能无法察觉到复制功能。

那么我们是否应该提供一个“复制到剪贴板”按钮来帮助用户?这功能应该会很有用,即使是对快捷键的人非常熟悉的用户来说。

关于剪贴板的安全

几年前,浏览器不可能直接使用剪贴板。开发人员不得不通过Flash来实现。

剪贴板看起来无关紧要,但想象一下,如果浏览器能够随意查看和操作内容,会发生什么。JS脚本(包括第三方脚本)能查看剪贴板内的文本信息,并将密码,敏感信息甚至整个文档发送到远程服务器。

现在的剪贴板基本功能有限,有如下限制:

1.大多数浏览器支持剪贴板,除了Safari。(译注,Safari其实已经支持)

2.支持因浏览器而异,有些功能不完整或有问题。

3.事件必须由用户必须发起,如点击鼠标或按下键盘。脚本不能自由访问剪贴板。

document.execCommand()

此方法就是实现剪贴板的关键,它可以传入cut,copy,paste三种参数。从最常用的document.execCommand('copy')开始介绍。

在使用之前,我们应该检查浏览器是否支持copy命令:document.queryCommandSupported('copy');或document.queryCommandEnabled('copy');,这两个方法效果相同。

但在Chrome下,尽管Chrome确实支持使用copy命名,但两个方法都返回false。所以***是将检查代码包在一个try-catch代码块中。

下一步,我们应该允许用户复制什么呢?必须突出显示文本,所有浏览器都可用select()方法选择文本input和textarea内的文本。同时Firefox和Chrome / Opera也支持document.createRange方法,该方法允许从任何元素中选择文本,如下:

// select text in #myelement node var   myelement = document.getElementById('#myelement'),   range = document.createRange();  range.selectNode(myelement); window.getSelection().addRange(range);

但IE / Edge不支持。

clipboard.js

若你不想自己实现一个较为健壮的跨浏览器剪贴板方法的话,clipboard.js可以帮你。它有好几种设置选项的方式,如H5的data属性,设置绑定触发元素以及目标元素,如:

<input id="copyme" value="text in this field will be copied" />  <button data-clipboard-target="#copyme">copy</button>

自己动手实现

clipboard.js大小仅2Kb,若仅实现如下的部分功能的话,那么可以在20行的代码内实现:

1.仅部分表单元素可被复制

2.若在不支持的浏览器中(没错,就是指Safari)(译注,Safari其实已经支持),可突出显示选中文本,并提示用户按Ctrl / Cmd + C。

像clipboard.js一样,先创建一个button用于触发方法,它具有一个data属性data-copytarget,指向要copy的元素(即#website)

<input type="text" id="website" value="http://www.sitepoint.com/" />  <button data-copytarget="#website">copy</button>

一个立即执行函数表达式绑定click事件的函数,该函数用于解析data-copytarget属性内容,选择对应字段的文本并执行document.execCommand('copy')。若失败,文本保持选中状态,显示提示框:

(function() {   'use strict';   // click events   document.body.addEventListener('click', copy, true);   // event handler   function copy(e) {     // find target element     var       t = e.target,       c = t.dataset.copytarget,       inp = (c ? document.querySelector(c) : null);     // is element selectable?     if (inp && inp.select) {       // select text       inp.select();       try {         // copy text         document.execCommand('copy');         inp.blur();       }       catch (err) {         alert('please press Ctrl/Cmd+C to copy');       }     }   }  })();

示例

虽然在上例中,算上样式和动画的代码,代码已经超过20行了,但动画和样式是可选的。

总结:

1.通过.select()选择要复制的表单元素的内容

2.调用document.execCommand("copy")方法

3.调用.blur()方法,从表单元素中移除焦点

4.将第2、3步包在try catch块中,在不支持的浏览器下则提示

以上是“JS怎么实现粘贴板功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JS怎么实现粘贴板功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

js 剪切、复制、粘贴功能实现

Navigator.clipboard API可以用来访问系统剪贴板,可以实现【剪切、复制、粘贴】功能。该 API 被设计用来取代使用 document.execCommand() 的剪贴板访问方式,不兼容 IE
2023-05-18

怎么用python实现复制粘贴功能

这篇文章主要介绍“怎么用python实现复制粘贴功能”,在日常操作中,相信很多人在怎么用python实现复制粘贴功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现复制粘贴功能”的疑惑有所
2023-06-08

vue如何实现粘贴复制功能

这篇文章主要介绍了vue如何实现粘贴复制功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。引言项目中如果实现粘贴复制功能,目前市面上共有三种方法,均有利有弊,大家可以根据自己
2023-06-29

js默认文本框粘贴事件怎么实现

本文小编为大家详细介绍“js默认文本框粘贴事件怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“js默认文本框粘贴事件怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。先上代码
2023-07-05

Java KindEditor粘贴图片自动上传到服务器功能怎么实现

这篇文章主要介绍了Java KindEditor粘贴图片自动上传到服务器功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java KindEditor粘贴图片自动上传到服务器功能怎么实现文章都会有所收
2023-07-06

详解如何使用Python实现复制粘贴的功能

pandas 里面有一个 pd.read_clipboard 函数,可以根据你复制的内容生成DataFrame。本文就利用这个函数实现复制粘贴的功能,感兴趣的可以了解一下
2023-01-03

JavaKindEditor粘贴图片自动上传到服务器功能实现

这篇文章主要介绍了JavaKindEditor粘贴图片自动上传到服务器功能实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-15

编程热搜

目录