代码块高亮可复制显示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 相关文章推荐
js获取图片长和宽度的代码
Nov 24 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
JS实现图片点击后出现模态框效果
May 03 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
你知道JavaScript Symbol类型怎么用吗
Jan 08 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
php实现用户登陆简单实例
2017/04/04 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解Python中find()方法的使用
2015/05/18 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
网络安全方面的面试题
2016/01/07 面试题
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
贷款承诺书范文
2014/05/19 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
公司转让协议书
2016/03/19 职场文书