代码块高亮可复制显示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获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
微信小程序实现图片压缩功能
Jan 26 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
Webpack中雪碧图插件使用详解
May 25 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 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写的serv-u的web申请账号的程序
2006/10/09 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Python requests设置代理的方法步骤
2020/02/23 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
EJB3.1都有哪些改进
2012/11/17 面试题
实习报告评语
2014/04/26 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
新店开张宣传语
2015/07/13 职场文书
教师师德承诺书2016
2016/03/25 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python