代码块高亮可复制显示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 匿名函数(anonymous function)与闭包(closure)
Oct 04 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
js中的setInterval和setTimeout使用实例
May 09 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
react高阶组件添加和删除props
Apr 26 Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 Javascript
JS开发 富文本编辑器TinyMCE详解
Jul 19 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.ini 中文版
2006/10/28 PHP
php Undefined index的问题
2009/06/01 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
使用微信SDK自定义分享的方法
2019/07/03 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js实现随机点名功能
2020/12/23 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
销售人员获奖感言
2014/02/05 职场文书
优乐美广告词
2014/03/14 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
2014年督导工作总结
2014/11/19 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
Python 内置函数速查表一览
2021/06/02 Python
CSS极坐标的实例代码
2021/06/03 HTML / CSS
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
Linux中sftp常用命令整理
2022/06/28 Servers