为网站代码块pre标签增加一个复制代码按钮代码

 更新时间:2021年11月20日 16:59:02   作者:李清灿  
写文章的时候,作为一名专业的码农,经常会在文章中粘贴一些代码。有的时候代码块比较长,在后期使用中需要复制这段代码就比较麻烦

参考其他比较专业的博客系统,都在代码块上有一个复制代码的按钮。用来快速复制整个代码块的代码。于是我也想给我的博客增加一个这个功能。

注:chrome测试通过。其他浏览器未进行测试。

实现思路:

1、在页面加载完成之后,使用js给每个pre标签增加一个按钮“复制代码”

2、给按钮增加点击事件,点击事件的功能就是复制代码块的内容

实现代码:

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标签增加按钮和实现拷贝部分,我这里拷贝部分的实现是先实例化一个临时的节点textarea,然后吧pre的内容设置进这个临时节点,然后选中内容进行复制,最后销毁这个节点。具体参考代码。js部分有依赖于jquery

$(function(){
    //给每一串代码元素增加复制代码节点
    let preList = $(".content pre");
    for (let pre of preList) {
        //给每个代码块增加上“复制代码”按钮
        let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>复制代码</span>");
        btn.prependTo(pre);
    }
});

/**
    * 执行复制代码操作
    * @param obj
    */
function preCopy(obj) {
    //执行复制
    let btn = $(obj);
    let pre = btn.parent();
    //为了实现复制功能。新增一个临时的textarea节点。使用他来复制内容
    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/

到此这篇关于为网站代码块pre标签增加一个复制代码按钮代码的文章就介绍到这了,更多相关代码高亮增加复制代码功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js 浏览器版本及版本号判断函数2009年

    js 浏览器版本及版本号判断函数2009年

    这个是至2009年4月比较新的判断浏览器版本的函数。js判断浏览器版本及版本号,本代码支持最新的ie7,ie8,firefox2,firefox3的判断
    2009-04-04
  • js动态移动滚动条至底部示例代码

    js动态移动滚动条至底部示例代码

    这篇文章主要介绍了使用js动态移动滚动条至底部,需要的朋友可以参考下
    2014-04-04
  • 原生JavaScript写出Tabs标签页的实例代码

    原生JavaScript写出Tabs标签页的实例代码

    这篇文章主要介绍了原生JavaScript写出Tabs标签页的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • pageGroup.js实现分页功能

    pageGroup.js实现分页功能

    这篇文章主要为大家详细介绍了pageGroup.js实现分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解webpack引用jquery(第三方模块)的三种办法

    详解webpack引用jquery(第三方模块)的三种办法

    这篇文章主要介绍了详解webpack引用jquery(第三方模块)的三种办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • JS判断浏览器是否安装flash插件的简单方法

    JS判断浏览器是否安装flash插件的简单方法

    下面小编就为大家带来一篇JS判断浏览器是否安装flash插件的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • JavaScript实现动态高度过渡的3种方式总结

    JavaScript实现动态高度过渡的3种方式总结

    这篇文章主要为大家详细介绍了JavaScript实现动态高度过渡的3种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • 详解JavaScript Alert函数执行顺序问题

    详解JavaScript Alert函数执行顺序问题

    本文主要介绍了Javascript的Alert函数执行顺序问题,对此感兴趣的同学,可以实验一下,以便解决平时遇到的一些奇怪的问题。
    2021-05-05
  • JS获取checkbox的个数简单实例

    JS获取checkbox的个数简单实例

    下面小编就为大家带来一篇JS获取checkbox的个数简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Javascript原生ajax请求代码实例

    Javascript原生ajax请求代码实例

    这篇文章主要介绍了Javascript原生ajax请求代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论