代码块高亮可复制显示js插件highlight.js+clipboard.js整合

 更新时间:2021年02月15日 23:58:34   作者:我是小H呀  
最近有个需求是将jsp页面上的某一段代码块格式化成类似CSDN的代码块的样式,而且很多平台都使用了这样的功能,下面就为大家简单分享一下

主要从两个方面入手了:

1.高亮显示/换行

2.复制代码按钮

这两方面都有现成的插件。

代码高亮插件——highlight.js

1.下载highlight的js文件。

https://highlightjs.org/

点击get version按钮进入语言选择

勾选常用语言,通常common就足够用了。

点击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>标签里!!!

如果你的代码里包含标签,记得将标签的"<"换成"&lt",把">"换成"&gt"

复制插件——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 值也可以是标签,但是如果有多个标签,会失效,注意。

两个插件使用过程中没有冲突,可以较好糅合。

相关文章

  • 微信小程序间使用navigator跳转传值问题实例分析

    微信小程序间使用navigator跳转传值问题实例分析

    这篇文章主要介绍了微信小程序间使用navigator跳转传值问题,结合实例形式分析了微信小程序间使用navigator跳转传值过程中遇到的问题与解决方法,需要的朋友可以参考下
    2020-03-03
  • D3.js实现绘制柱状图的教程详解

    D3.js实现绘制柱状图的教程详解

    这篇文章主要为大家详细介绍了如何通过D3.js实现绘制柱状图,文中的示例代码讲解详细,对我们学习D3.js有一定的帮助,需要的可以参考一下
    2022-11-11
  • 原生js封装的ajax方法示例

    原生js封装的ajax方法示例

    这篇文章主要介绍了原生js封装的ajax方法,结合实例形式分析了JavaScript封装ajax操作及调用方法相关操作技巧,非常简单实用,需要的朋友可以参考下
    2018-08-08
  • js模拟淘宝网的多级选择菜单实现方法

    js模拟淘宝网的多级选择菜单实现方法

    这篇文章主要介绍了js模拟淘宝网的多级选择菜单实现方法,涉及javascript针对页面元素结点的遍历与设置等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • js 通用javascript函数库整理

    js 通用javascript函数库整理

    js 通用javascript函数库整理,学习js的朋友可以参考下。
    2011-08-08
  • 获取焦点时,利用js定时器设定时间执行动作

    获取焦点时,利用js定时器设定时间执行动作

    网上有很多类似的知识,并不是有什么难度的技巧,仅仅是开发过程中的一点点积累而已。
    2010-04-04
  • js 只比较时间大小的实例

    js 只比较时间大小的实例

    下面小编就为大家带来一篇js 只比较时间大小的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 如何在uniapp项目中使用mqtt

    如何在uniapp项目中使用mqtt

    本文给大家分享uniapp中引入mqtt的全过程,在uniapp项目根目录下分别运行安装mqtt和uuid的命令行,因为后面会用uuid生成mqtt的clientId,文中给大家介绍mqtt和uuid安装过程,感兴趣的朋友跟随小编一起学习下吧
    2021-05-05
  • JavaScript的public、private和privileged模式

    JavaScript的public、private和privileged模式

    公共/私有变量和方法通过一个简单的的例子,来展示如何使用JavaScript在类里面创建私有变量和方法
    2009-12-12
  • 小程序实现简单验证码倒计时

    小程序实现简单验证码倒计时

    这篇文章主要为大家详细介绍了小程序实现简单验证码倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07

最新评论