代碼塊高亮可復(fù)制顯示js插件highlight.js+clipboard.js整合
主要從兩個方面入手了:
1.高亮顯示/換行
2.復(fù)制代碼按鈕
這兩方面都有現(xiàn)成的插件。
代碼高亮插件——highlight.js
1.下載highlight的js文件。
點擊get version按鈕進入語言選擇

勾選常用語言,通常common就足夠用了。

點擊download,下載,解壓,里面會有js文件和css文件。
js文件決定哪些部分高亮,css決定代碼顏色
2.在解壓后的文件里找到一個highlight.pack.js文件,在使用時導(dǎo)入這個js文件。
<script src="js/jquery-3.1.1.js"></script> <script src="js/highlight.pack.js"></script>
3.打開里面的styles文件,里面有很多的css文件。這些文件可以更改你的展示代碼的css樣式,包括高亮的顏色和背景色(主題色)。
在使用時想使用那種樣式只需要導(dǎo)入這個樣式的css文件即可??床欢@些英文都代表的什么樣式?這個網(wǎng)址有各個css文件的效果展示:https://highlightjs.org/static/demo/
這里我選擇了一個dark.css文件:
<link rel="stylesheet" type="text/css" href="css/dark.css" rel="external nofollow" />
導(dǎo)入js文件和css文件后然后就可以使用了。
在使用時,一定要將你要展示的代碼包在<pre><code></code></pre>標簽里?。?!
如果你的代碼里包含標簽,記得將標簽的"<"換成"<",把">"換成">"
復(fù)制插件——clipboard.js
一開始想直接使用execCommand實現(xiàn)復(fù)制,代碼如下。結(jié)果復(fù)制到的內(nèi)容沒有換行空格等相關(guān)的格式,且有兼容性問題,在找了大量插件的過程中采用了現(xiàn)成的復(fù)制插件clipboard.js,能夠較方便快捷的實現(xiàn)功能。
<script type="text/javascript">
function copyLink(){
var e = document.getElementById("copy");
e.select(); // 選擇對象
document.execCommand("Copy"); // 執(zhí)行瀏覽器復(fù)制命令
alert("復(fù)制鏈接成功!");
}
</script>
clipboard.js 可以實現(xiàn)純 JS 的從瀏覽器復(fù)制文本到系統(tǒng)剪貼板的功能。
使用過程中前端瀏覽器提示了 Clipboard is not defined
一開始以為是未定義或者源碼錯誤,找了半天發(fā)現(xiàn)是引入js文件時路徑有錯誤(今后在使用插件過程中如果有未定義的問題,一定要F12調(diào)試看一下有沒有404錯誤)
1. 下載 clipboard.js。clipboard.js 下載地址: https://github.com/zenorocha/clipboard.js
2.引入插件
下載下來的文件clipboard.js-master\clipboard.js-master\demo中可以看到示例,可直接使用
以下是復(fù)制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)定義復(fù)制的按鈕跟內(nèi)容(注:此處需要給觸發(fā)復(fù)制時間的按鈕添加兩個屬性,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 值也可以是標簽,但是如果有多個標簽,會失效,注意。
兩個插件使用過程中沒有沖突,可以較好糅合。
相關(guān)文章
微信小程序間使用navigator跳轉(zhuǎn)傳值問題實例分析
這篇文章主要介紹了微信小程序間使用navigator跳轉(zhuǎn)傳值問題,結(jié)合實例形式分析了微信小程序間使用navigator跳轉(zhuǎn)傳值過程中遇到的問題與解決方法,需要的朋友可以參考下2020-03-03
js模擬淘寶網(wǎng)的多級選擇菜單實現(xiàn)方法
這篇文章主要介紹了js模擬淘寶網(wǎng)的多級選擇菜單實現(xiàn)方法,涉及javascript針對頁面元素結(jié)點的遍歷與設(shè)置等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
獲取焦點時,利用js定時器設(shè)定時間執(zhí)行動作
網(wǎng)上有很多類似的知識,并不是有什么難度的技巧,僅僅是開發(fā)過程中的一點點積累而已。2010-04-04
JavaScript的public、private和privileged模式
公共/私有變量和方法通過一個簡單的的例子,來展示如何使用JavaScript在類里面創(chuàng)建私有變量和方法2009-12-12

