為網(wǎng)站代碼塊pre標簽增加一個復制代碼按鈕代碼
參考其他比較專業(yè)的博客系統(tǒng),都在代碼塊上有一個復制代碼的按鈕。用來快速復制整個代碼塊的代碼。于是我也想給我的博客增加一個這個功能。
注:chrome測試通過。其他瀏覽器未進行測試。
實現(xiàn)思路:
1、在頁面加載完成之后,使用js給每個pre標簽增加一個按鈕“復制代碼”
2、給按鈕增加點擊事件,點擊事件的功能就是復制代碼塊的內容
實現(xiàn)代碼:
css部分,btn-pre-copy是pre標簽中使用js增加的“復制代碼”按鈕。css的作用是讓他顯示在pre標簽的右上角。這里要注意pre標簽和按鈕中position屬性
.content pre{
position: relative;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 4px;
padding: 10px;
}
pre .btn-pre-copy{
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
user-select: none;
position: absolute;
top: 10px;
right: 12px;
font-size: 12px;
line-height: 1;
cursor: pointer;
color: hsla(0,0%,54.9%,.8);
transition: color .1s;
}
js部分,js部分主要是給pre標簽增加按鈕和實現(xiàn)拷貝部分,我這里拷貝部分的實現(xiàn)是先實例化一個臨時的節(jié)點textarea,然后吧pre的內容設置進這個臨時節(jié)點,然后選中內容進行復制,最后銷毀這個節(jié)點。具體參考代碼。js部分有依賴于jquery
$(function(){
//給每一串代碼元素增加復制代碼節(jié)點
let preList = $(".content pre");
for (let pre of preList) {
//給每個代碼塊增加上“復制代碼”按鈕
let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>復制代碼</span>");
btn.prependTo(pre);
}
});
/**
* 執(zhí)行復制代碼操作
* @param obj
*/
function preCopy(obj) {
//執(zhí)行復制
let btn = $(obj);
let pre = btn.parent();
//為了實現(xiàn)復制功能。新增一個臨時的textarea節(jié)點。使用他來復制內容
let temp = $("<textarea></textarea>");
//避免復制內容時把按鈕文字也復制進去。先臨時置空
btn.text("");
temp.text(pre.text());
temp.appendTo(pre);
temp.select();
document.execCommand("Copy");
temp.remove();
//修改按鈕名
btn.text("復制成功");
//一定時間后吧按鈕名改回來
setTimeout(()=> {
btn.text("復制代碼");
},1500);
}
這里在gitee上做了一個簡單的demo。demo示例:

在線測試:http://demo.jb51.net/js/2021/code_copy/
到此這篇關于為網(wǎng)站代碼塊pre標簽增加一個復制代碼按鈕代碼的文章就介紹到這了,更多相關代碼高亮增加復制代碼功能內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Electron點擊穿透不規(guī)則窗體的透明區(qū)域的實現(xiàn)
本文主要介紹了Electron點擊穿透不規(guī)則窗體的透明區(qū)域的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
JavaScript style對象與CurrentStyle對象案例詳解
這篇文章主要介紹了JavaScript style對象與CurrentStyle對象案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08
JS判斷鼠標進入容器的方向與window.open新窗口被攔截的問題
這篇文章主要給大家介紹了利用Javascript判斷鼠標進入容器方向的方法,以及window.open新窗口被攔截的問題分析,文中給出了詳細圖文介紹和示例代碼,相信對大家的理解和學習具有一定的參考借鑒價值,下面來一起看看吧。2016-12-12
Javascript實現(xiàn)簡單的富文本編輯器附演示
這篇文章主要介紹了通過Javascript實現(xiàn)的簡單富文本編輯器,需要的朋友可以參考下2014-06-06

