為網(wǎng)站代碼塊pre標(biāo)簽增加一個復(fù)制代碼按鈕代碼
參考其他比較專業(yè)的博客系統(tǒng),都在代碼塊上有一個復(fù)制代碼的按鈕。用來快速復(fù)制整個代碼塊的代碼。于是我也想給我的博客增加一個這個功能。
注:chrome測試通過。其他瀏覽器未進(jìn)行測試。
實(shí)現(xiàn)思路:
1、在頁面加載完成之后,使用js給每個pre標(biāo)簽增加一個按鈕“復(fù)制代碼”
2、給按鈕增加點(diǎn)擊事件,點(diǎn)擊事件的功能就是復(fù)制代碼塊的內(nèi)容
實(shí)現(xiàn)代碼:
css部分,btn-pre-copy是pre標(biāo)簽中使用js增加的“復(fù)制代碼”按鈕。css的作用是讓他顯示在pre標(biāo)簽的右上角。這里要注意pre標(biāo)簽和按鈕中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標(biāo)簽增加按鈕和實(shí)現(xiàn)拷貝部分,我這里拷貝部分的實(shí)現(xiàn)是先實(shí)例化一個臨時的節(jié)點(diǎn)textarea,然后吧pre的內(nèi)容設(shè)置進(jìn)這個臨時節(jié)點(diǎn),然后選中內(nèi)容進(jìn)行復(fù)制,最后銷毀這個節(jié)點(diǎn)。具體參考代碼。js部分有依賴于jquery
$(function(){
//給每一串代碼元素增加復(fù)制代碼節(jié)點(diǎn)
let preList = $(".content pre");
for (let pre of preList) {
//給每個代碼塊增加上“復(fù)制代碼”按鈕
let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>復(fù)制代碼</span>");
btn.prependTo(pre);
}
});
/**
* 執(zhí)行復(fù)制代碼操作
* @param obj
*/
function preCopy(obj) {
//執(zhí)行復(fù)制
let btn = $(obj);
let pre = btn.parent();
//為了實(shí)現(xiàn)復(fù)制功能。新增一個臨時的textarea節(jié)點(diǎn)。使用他來復(fù)制內(nèi)容
let temp = $("<textarea></textarea>");
//避免復(fù)制內(nèi)容時把按鈕文字也復(fù)制進(jìn)去。先臨時置空
btn.text("");
temp.text(pre.text());
temp.appendTo(pre);
temp.select();
document.execCommand("Copy");
temp.remove();
//修改按鈕名
btn.text("復(fù)制成功");
//一定時間后吧按鈕名改回來
setTimeout(()=> {
btn.text("復(fù)制代碼");
},1500);
}
這里在gitee上做了一個簡單的demo。demo示例:

在線測試:http://demo.jb51.net/js/2021/code_copy/
到此這篇關(guān)于為網(wǎng)站代碼塊pre標(biāo)簽增加一個復(fù)制代碼按鈕代碼的文章就介紹到這了,更多相關(guān)代碼高亮增加復(fù)制代碼功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序picker組件兩列關(guān)聯(lián)使用方式
這篇文章主要介紹了微信小程序picker組件兩列關(guān)聯(lián)使用方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
webpack打包后index.html引用文件地址問題小結(jié)
在前端開發(fā)中,src 屬性指定的相對路徑是相對于當(dāng)前 HTML 文件的路徑,而不是相對于網(wǎng)站的根目錄,這篇文章主要介紹了webpack打包后index.html引用文件地址問題,需要的朋友可以參考下2024-05-05
淺析JavaScript回調(diào)函數(shù)應(yīng)用
這篇文章主要為大家詳細(xì)介紹了JavaScript回調(diào)函數(shù)應(yīng)用,感興趣的朋友可以參考一下2016-05-05

