代码块高亮可复制显示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 相关文章推荐
JavaScript Archive Network 集合
May 12 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
网站接入QQ登录的两种方法
Jul 22 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
Javascript使用post方法提交数据实例
Aug 03 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 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/06 咖啡文化
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
python中requests和https使用简单示例
2018/01/18 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python 函数基础知识汇总
2018/03/09 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
python中Django文件上传方法详解
2020/08/05 Python
学生励志演讲稿
2014/01/06 职场文书
党员干部公开承诺书
2014/03/26 职场文书
机关搬迁方案
2014/05/18 职场文书
民事诉讼代理词
2015/05/25 职场文书
感恩父母主题班会
2015/08/12 职场文书
高中信息技术教学反思
2016/02/16 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis