為網(wǎng)站代碼塊pre標(biāo)簽增加一個(gè)復(fù)制代碼按鈕代碼
參考其他比較專業(yè)的博客系統(tǒng),都在代碼塊上有一個(gè)復(fù)制代碼的按鈕。用來(lái)快速?gòu)?fù)制整個(gè)代碼塊的代碼。于是我也想給我的博客增加一個(gè)這個(gè)功能。
注:chrome測(cè)試通過(guò)。其他瀏覽器未進(jìn)行測(cè)試。
實(shí)現(xiàn)思路:
1、在頁(yè)面加載完成之后,使用js給每個(gè)pre標(biāo)簽增加一個(gè)按鈕“復(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í)例化一個(gè)臨時(shí)的節(jié)點(diǎn)textarea,然后吧pre的內(nèi)容設(shè)置進(jìn)這個(gè)臨時(shí)節(jié)點(diǎn),然后選中內(nèi)容進(jìn)行復(fù)制,最后銷毀這個(gè)節(jié)點(diǎn)。具體參考代碼。js部分有依賴于jquery
$(function(){ //給每一串代碼元素增加復(fù)制代碼節(jié)點(diǎn) let preList = $(".content pre"); for (let pre of preList) { //給每個(gè)代碼塊增加上“復(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ù)制功能。新增一個(gè)臨時(shí)的textarea節(jié)點(diǎn)。使用他來(lái)復(fù)制內(nèi)容 let temp = $("<textarea></textarea>"); //避免復(fù)制內(nèi)容時(shí)把按鈕文字也復(fù)制進(jìn)去。先臨時(shí)置空 btn.text(""); temp.text(pre.text()); temp.appendTo(pre); temp.select(); document.execCommand("Copy"); temp.remove(); //修改按鈕名 btn.text("復(fù)制成功"); //一定時(shí)間后吧按鈕名改回來(lái) setTimeout(()=> { btn.text("復(fù)制代碼"); },1500); }
這里在gitee上做了一個(gè)簡(jiǎn)單的demo。demo示例:
在線測(cè)試:http://demo.jb51.net/js/2021/code_copy/
到此這篇關(guān)于為網(wǎng)站代碼塊pre標(biāo)簽增加一個(gè)復(fù)制代碼按鈕代碼的文章就介紹到這了,更多相關(guān)代碼高亮增加復(fù)制代碼功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)購(gòu)物頁(yè)面左右聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)購(gòu)物頁(yè)面左右聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02Electron點(diǎn)擊穿透不規(guī)則窗體的透明區(qū)域的實(shí)現(xiàn)
本文主要介紹了Electron點(diǎn)擊穿透不規(guī)則窗體的透明區(qū)域的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09js實(shí)現(xiàn)圖片淡入淡出切換簡(jiǎn)易效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)圖片淡入淡出切換簡(jiǎn)易效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08JavaScript style對(duì)象與CurrentStyle對(duì)象案例詳解
這篇文章主要介紹了JavaScript style對(duì)象與CurrentStyle對(duì)象案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08JS判斷鼠標(biāo)進(jìn)入容器的方向與window.open新窗口被攔截的問(wèn)題
這篇文章主要給大家介紹了利用Javascript判斷鼠標(biāo)進(jìn)入容器方向的方法,以及window.open新窗口被攔截的問(wèn)題分析,文中給出了詳細(xì)圖文介紹和示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。2016-12-12Javascript實(shí)現(xiàn)簡(jiǎn)單的富文本編輯器附演示
這篇文章主要介紹了通過(guò)Javascript實(shí)現(xiàn)的簡(jiǎn)單富文本編輯器,需要的朋友可以參考下2014-06-06合并多個(gè)ArrayBuffer場(chǎng)景及方法示例
這篇文章主要為大家介紹了合并多個(gè)ArrayBuffer方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11