代码块高亮可复制显示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中出现乱码的处理心得
Dec 24 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
Feb 15 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
js实现禁止中文输入的方法
Jan 14 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
Sep 14 Javascript
vue获取form表单的值示例
Oct 29 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
php URL跳转代码 减少外链
2011/06/25 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python多线程扫描端口示例
2014/01/16 Python
python中requests模块的使用方法
2015/04/08 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Django models文件模型变更错误解决
2020/05/11 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
关于Java String的一道面试题
2013/09/29 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
2014年高考决心书
2014/03/11 职场文书
企业宗旨标语
2014/06/10 职场文书
建筑管理专业求职信
2014/07/28 职场文书
岗位说明书怎么写
2014/07/30 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
《花钟》教学反思
2016/02/17 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript