代码块高亮可复制显示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对象的property和prototype是什么一种关系
Aug 06 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
Sep 15 Javascript
JS实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
js实现网页抽奖实例
Aug 05 Javascript
一个简单不报错的summernote 图片上传案例
Jul 11 Javascript
浅谈jquery高级方法描述与应用
Oct 04 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
实现两个文本框同时输入的实例
Sep 25 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
vuex直接赋值的三种方法总结
Sep 16 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 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常用正则表达式的整理汇总
2013/06/08 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[03:08]Ti4观战指南上
2014/07/07 DOTA
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
python opencv实现图像边缘检测
2019/04/29 Python
Python安装selenium包详细过程
2019/07/23 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
计算机网络专业自荐书
2014/06/09 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android