返回顶部
首页 > 资讯 > 前端开发 > node.js >node.js实现复制文本到剪切板的功能
  • 622
分享到

node.js实现复制文本到剪切板的功能

文本功能剪切板 2022-06-04 17:06:18 622人浏览 安东尼
摘要

前言 最近在工作中遇到一种需求:我需要请求后端数据,但请求数据前需要登陆,获得一个token。登陆方式是向一个JSON地址post数据即可。之前我的做法是,用chrome插件postman来实现登陆动作。但

前言

最近在工作中遇到一种需求:我需要请求后端数据,但请求数据前需要登陆,获得一个token。登陆方式是向一个JSON地址post数据即可。之前我的做法是,用chrome插件postman来实现登陆动作。但后来无意中发现,postman内存占用超高!即使我并没有使用它。这让我很不爽。

后来一想,实现这么简单的一个动作,用这么重的插件,对于我这样一个会nodejs前端程序员是不是太Low了?简直不好意思对人讲自己会nodejs

于是我就花了点时间写了个简单的脚本。本文记录一下开发过程。

实现思路

思路大概是,用nodejs脚本发请求,并将返回结果中的token自动复制到剪切板,于是我只用在调试代码中,ctrl+v就行了。

思路很简单,但实现起来居然坑很多。

nodejs没有直接复制到剪切板的API!

非常简单的功能,但nodejs没有提供。但不要绝望,因为nodejs可以调用系统命令,而系统命令中有不少可以操作剪切板的命令。

Google之后,由于系统是windows,所以考虑使用windows cmd命令中的clip,来实现复制到剪切板的功能。

nodejs调用系统命令(cmd)

即var exec = require(‘child_process').exec,然后你就可以像普通函数一样调用它,如:exec(‘echo 111');

clip命令的坑

在cmd里,实现复制文本到剪切板最简单的命令是:echo 123456 | clip。本来,在nodejs中拼出这样一句语句,交给child_process.exec执行就可以了。但这个命令的执行结果,有个我无法忍受的bug:复制出来的文本,最后有个换行符(echo造成的)!我不可能在ctrl+v后,还要按几下删除键才能ctrl+s啊!

当时让我很纠结,我很奇怪微软连这么简单的命令都没作好。但无奈事情还是要做的,只有继续寻找解决办法。于是有了下面这个不经过echo的方式:


<nul (set/p z=123456) | clip

这种方法十分别扭,注意最开头那个<,不是我打错了字!大致思路是,通过set命令设置一个变量名为p(此名随意改)的变量,值为12346,并马上调用clip复制此变量的值。 但这种方法复制出来的值还是有bug:末尾多了一个空格!虽然你代码里并没有空格,但复制出来就是有!去不掉! 当时我简直要骂娘了!没有换行就有空格,能不能靠点谱!

麻烦而稳妥的最终实现

最后我尝试了一种思路:得到要复制的文本后,生成一个临时文件,将文本放进去;生成一个批处理文件,在批处理文件中调用clip命令,复制那个文本文件的内容;最后删除临时文本文件与批处理文件。

当时我想的是,要是这种方式还不能完美,我就弃nodejs投python!

所幸复制出来的文本,终于正常了,没有换行符,没有空格。

代码如下,为了方便发请求使用了request包:


'use strict';

var request = require('request');
var fs = require('fs');

var exec = require('child_process').exec;
var execFile = require('child_process').execFile;
request({
 method: 'POST',
 uri:'Http://WEB.test1.com/mgw/login.json',
 headers: {
  'Content-Type':'application/json'
 },
 body: JSON.stringify({
  "loginname":"lixing1@0101005",
  "pw":"aebc3ebee2f0c8b08b43D26c2b0055b19caeaf4a",
  "res":"web"
 })
 }, function (err, result, body) {
 console.log(body);
 body = JSON.parse(body);
 copyToClipboard(body.token, function (text, stdout) {
  console.log('token copy successed!', text, stdout);
 })
});


// 简单的复制文本到剪切板的函数,参数依次是文本,成功回调
var copyToClipboard = function(text, func) {
 // 这种复制出来后最后有个换行符,不合要求
 'echo ' + text + ' | clip';
 // 这种复制出来最后有个空格,还将就
 '<nul (set/p z=' + text + ') | clip';

 // 这种方式最完美,但最麻烦
 // 会生成一个批处理文件,一个文本文件,以批处理文件复制文件文件的内容,后又需要删除两个文件。
 var temp = 'txt_' + Date.now() + '.txt';

 var str = `@echo off
<nul (set/p z=${text}) > ${temp} 
clip < ${temp} 
del ${temp}
`;
// 这句加入批处理,会导致报错,虽然能执行(复制)成功。原因应该是,del批处理文件自身的时候,nodejs还在使用他
// 'del "%~f0"';
 var cmdFile = 'ttzkxlcjv.cmd';
 fs.writeFile(cmdFile, str);
 exec(cmdFile, function(err, stdout, stderr) {
 if (err || stderr) return console.log(err, stdout, stderr);
 // 用nodejs删除文件
 fs.unlink(cmdFile);
 func(text, stdout);
 });
};

这里面涉及到cmd clip的另一个用法,即 clip < a_text.txt,这样会将后面这个文件的内容,复制出来。 这里面还有个小坑。即在批处理文件中,加入del "%~f0"删除自身,本来是可以用的,但在nodejs里执行却会报错,后来我猜想,应该是因为批处理文件在执行到删除自身的命令时,进程还被nodejs引用着,结果报错了。后来只有调用nodejs的fs.unlink命令,删除那个批处理文件。

总结

通过实现这个功能,我学会了使用Request包,调用系统命令,clip的使用方法。果然实实在在的需求,才是最强的生产力。

要是linuxMac系统,实现此功能就简单多了。

clip命令不只可以复制文本,大家可以探索下。

备: 最近嫌每次都要自己ctrl+v太麻烦,所以我使用fs.readFile与fs.writeFile,将请求回来的token直接写入我的配置文件。以上的剪切板功能也就没用上了,不过我觉得很适合记录下来这次经历。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: node.js实现复制文本到剪切板的功能

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

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

猜你喜欢
  • 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
  • js 剪切、复制、粘贴功能实现
    针对现代浏览器实现(Navigator.clipboard) Navigator.clipboard API可以用来访问系统剪贴板,可以实现【剪切、复制、粘贴】功能。该 API 被设...
    99+
    2023-05-18
    js 剪切 js复制 js粘贴
  • JS如何实现复制内容到剪贴板功能
    这篇文章主要为大家展示了“JS如何实现复制内容到剪贴板功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现复制内容到剪贴板功能”这篇文章吧。前记:本来...
    99+
    2024-04-02
  • 使用clipboard.js库实现复制剪切功能
    项目地址:https://github.com/zenorocha/clipboard.js 现代化的“复制到剪切板”插件。不包含 Flash。gzip 压缩...
    99+
    2024-04-02
  • JavaScript+Html5怎么实现按钮拷贝文字到剪切板功能
    这篇文章给大家分享的是有关JavaScript+Html5怎么实现按钮拷贝文字到剪切板功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用的方法:clipboard插件下载地址...
    99+
    2024-04-02
  • vue中如何实现复制内容到剪切板详解
    目录1. element-ui的el-table实现双击复制单元格的内容到剪切板1. 在el-table中添加双击响应事件2. 在methods中添加双击绑定的copyText方法2...
    99+
    2022-11-13
    vue 复制到剪切板 vue实现复制功能 vue复制指定内容到剪切板
  • 如何使用clipboard.js库实现复制剪切功能
    这篇文章主要介绍“如何使用clipboard.js库实现复制剪切功能”,在日常操作中,相信很多人在如何使用clipboard.js库实现复制剪切功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用cli...
    99+
    2023-07-02
  • Webjs实现复制文本到粘贴板
    本文实例为大家分享了Web js实现复制文本到粘贴板的具体代码,供大家参考,具体内容如下 一、简述 记--简单用js实现将元素的文本内容复制到粘贴板。 二、效果 三、代码 <...
    99+
    2024-04-02
  • 怎么在Html5中实现一个剪切板功能
    这期内容当中小编将会给大家带来有关怎么在Html5中实现一个剪切板功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.不带input输入框的原生js方法这种情况适用于复制非输入框中的文本到剪切板&nbs...
    99+
    2023-06-09
  • mac截图复制到剪切板的方法是什么
    本篇内容介绍了“mac截图复制到剪切板的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mac截图复制到剪切板按住Ctrl键进行截图...
    99+
    2023-07-04
  • 怎么用vbscript实现将脚本的输出复制到剪贴板
    本篇内容主要讲解“怎么用vbscript实现将脚本的输出复制到剪贴板”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vbscript实现将脚本的输出复制到剪贴板”吧!代码如下:strCopy...
    99+
    2023-06-08
  • jQuery如何实现复制到粘贴板功能
    这篇文章主要为大家展示了“jQuery如何实现复制到粘贴板功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何实现复制到粘贴板功能”这篇文章吧。用...
    99+
    2024-04-02
  • Android 复制文本内容到系统剪贴板的最简单实例(分享)
    这个例子很简单,直接上截图和代码。 布局文件activity_copy.xml代码如下: <?xml version="1.0" encoding="utf...
    99+
    2022-06-06
    系统 剪贴板 Android
  • Android应用中怎么将文本内容复制到系统剪贴板
    Android应用中怎么将文本内容复制到系统剪贴板?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。布局文件activity_copy.xml代码如下:<&#63;x...
    99+
    2023-05-31
    roi android
  • JavaScript怎么实现一键复制文本功能
    这篇文章主要介绍了JavaScript怎么实现一键复制文本功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript怎么实现一键复制文本功能文章都会有所收获,下面我们一起来看看吧。一、navigat...
    99+
    2023-07-05
  • 怎么使用JavaScript读取所选文本并将其复制到剪贴板
    本篇内容介绍了“怎么使用JavaScript读取所选文本并将其复制到剪贴板”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2024-04-02
  • 如何实现右键菜单屏蔽和复制到剪贴板的javascript
    这篇文章主要介绍了如何实现右键菜单屏蔽和复制到剪贴板的javascript,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。function copyText(){  ...
    99+
    2023-06-03
  • 【uniapp开发小程序】实现读取手机剪切板,实现长按内容复制
    实现读取手机剪切板需求 效果图: 完整代码:  测试点击此处可快速识别 您的收货信息export default {data() {return {addressData: {name: '',phone: '',details: '',...
    99+
    2023-10-18
    uni-app 小程序 javascript
  • Linux下文件剪切的shell脚本实现代码
    需求描述 编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。 其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。要求当源目录不存在、源目录下无文件...
    99+
    2022-06-04
    脚本 代码 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作