代码块高亮可复制显示js插件highlight.js+clipboard.js整合


Posted in Javascript onFebruary 15, 2021

主要从两个方面入手了:

1.高亮显示/换行

2.复制代码按钮

这两方面都有现成的插件。

代码高亮插件——highlight.js

1.下载highlight的js文件。

https://highlightjs.org/

点击get version按钮进入语言选择

代码块高亮可复制显示js插件highlight.js+clipboard.js整合

勾选常用语言,通常common就足够用了。

代码块高亮可复制显示js插件highlight.js+clipboard.js整合

点击download,下载,解压,里面会有js文件和css文件。

js文件决定哪些部分高亮,css决定代码颜色

2.在解压后的文件里找到一个highlight.pack.js文件,在使用时导入这个js文件。

<script src="js/jquery-3.1.1.js"></script> 
<script src="js/highlight.pack.js"></script>

3.打开里面的styles文件,里面有很多的css文件。这些文件可以更改你的展示代码的css样式,包括高亮的颜色和背景色(主题色)。

在使用时想使用那种样式只需要导入这个样式的css文件即可。看不懂这些英文都代表的什么样式?这个网址有各个css文件的效果展示:https://highlightjs.org/static/demo/

这里我选择了一个dark.css文件:

<link rel="stylesheet" type="text/css" href="css/dark.css" rel="external nofollow" />

导入js文件和css文件后然后就可以使用了。

在使用时,一定要将你要展示的代码包在<pre><code></code></pre>标签里!!!

如果你的代码里包含标签,记得将标签的"<"换成"<",把">"换成">"

复制插件——clipboard.js

        一开始想直接使用execCommand实现复制,代码如下。结果复制到的内容没有换行空格等相关的格式,且有兼容性问题,在找了大量插件的过程中采用了现成的复制插件clipboard.js,能够较方便快捷的实现功能。

<script type="text/javascript">
function copyLink(){
var e = document.getElementById("copy");
e.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
alert("复制链接成功!");
}
</script>

clipboard.js 可以实现纯 JS 的从浏览器复制文本到系统剪贴板的功能。

使用过程中前端浏览器提示了 Clipboard is not defined

一开始以为是未定义或者源码错误,找了半天发现是引入js文件时路径有错误(今后在使用插件过程中如果有未定义的问题,一定要F12调试看一下有没有404错误)

1. 下载 clipboard.js。clipboard.js 下载地址: https://github.com/zenorocha/clipboard.js

2.引入插件

下载下来的文件clipboard.js-master\clipboard.js-master\demo中可以看到示例,可直接使用

以下是复制id=copyCode 的div使用实例:

1)引入js文件

<script src="${ctx }/styles/js/clipboard.min.js" type="text/javascript" ></script>

2)实例化clipboard对象

<script>
var clipboard = new ClipboardJS('.btn');
clipboard.on('success', function(e) {
   console.log(e);
});
clipboard.on('error', function(e) {
console.log(e);
});
</script>

3)定义复制的按钮跟内容(注:此处需要给触发复制时间的按钮添加两个属性,data-clipboard-action 及 data-clipboard-target,data-clipboard-target的属性值为目标文本的 id 值)

<div id="copyCode">hello</div>
<button class="btn" data-clipboard-action="copy" data-clipboard-target="#copyCode">Copy</button>

data-clipboard-target 值也可以是标签,但是如果有多个标签,会失效,注意。

两个插件使用过程中没有冲突,可以较好糅合。

Javascript 相关文章推荐
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 Javascript
动态样式类封装JS代码
Sep 02 Javascript
jQuery数据显示插件整合实现代码
Oct 24 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 #Javascript
如何在 Vue 中使用 JSX
Feb 14 #Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 #Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 #Vue.js
详解ES6实现类的私有变量的几种写法
Feb 10 #Javascript
微信小程序实现点赞业务
Feb 10 #Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 #Javascript
You might like
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
Python谱减法语音降噪实例
2019/12/18 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
运动会入场词100字
2014/02/06 职场文书
运动会加油稿20字
2014/11/15 职场文书
荆州古城导游词
2015/02/06 职场文书
会议室使用管理制度
2015/08/06 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书