代码块高亮可复制显示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中的View-Model使用介绍
Aug 11 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
node.js中的console.timeEnd方法使用说明
Dec 09 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
Dec 30 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
微信小程序上传图片实例
May 28 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
Yii清理缓存的方法
2016/01/06 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
常用jQuery代码分享
2015/07/14 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python发送email的3种方法
2015/04/28 Python
Python自定义线程池实现方法分析
2018/02/07 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python实现浪漫的烟花秀
2019/01/30 Python
python中的colorlog库使用详解
2019/07/05 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
教师简历自我评价
2014/02/03 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
民主生活会主持词
2015/07/01 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Java实现带图形界面的聊天程序
2022/06/10 Java/Android