代码块高亮可复制显示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获得地址栏参数的两种方法
Nov 08 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
JQuery中getJSON的使用方法
Dec 13 Javascript
js控制iframe的高度/宽度让其自适应内容
Apr 09 Javascript
JavaScript中获取高度和宽度函数总结
Oct 08 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
AngularJS动态生成div的ID源码解析
Aug 29 Javascript
整理一些最近经常遇到的前端面试题
Apr 25 Javascript
javaScript字符串工具类StringUtils详解
Dec 08 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
JavaScript实现表单注册、表单验证、运算符功能
Oct 15 Javascript
深入解析vue 源码目录及构建过程分析
Apr 24 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
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php使用codebase生成随机数
2014/03/25 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
Python生成随机数的方法
2014/01/14 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
python中zip()方法应用实例分析
2016/04/16 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python中元组的用法整理
2020/06/15 Python
在keras里实现自定义上采样层
2020/06/28 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
大学生写自荐信的技巧
2014/01/08 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
一岗双责责任书
2014/04/15 职场文书
老乡聚会通知
2015/04/23 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书