代码块高亮可复制显示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 相关文章推荐
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
element中el-container容器与div布局区分详解
May 13 Javascript
利用JavaScript模拟京东按键输入功能
Dec 01 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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
中国的第一台收音机
2021/03/01 无线电
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
js实现小球在页面规定的区域运动
2020/06/16 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
Python 读取位于包中的数据文件
2020/08/07 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
小学生打架检讨书
2014/01/26 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
婚礼司仪主持词
2014/03/14 职场文书
担保书怎么写
2014/04/01 职场文书
创意婚礼策划方案
2014/05/18 职场文书
路政管理求职信
2014/06/18 职场文书
英文升职感谢信
2015/01/23 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技