吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4633|回复: 10
收起左侧

[其他转载] Typecho复制代码插件

[复制链接]
tuziang 发表于 2019-7-23 14:52
介绍:

这是给Typecho博客用的 复制代码 插件





仿的CSDN,只有鼠标放到代码块,才会显示复制代码,鼠标从代码块移开,复制代码方框消失。支持一篇文章多个代码块的单独复制


点击复制代码,会出现成功复制的提示。之后延迟一秒后,又会重置为复制代码


具体JavaScript代码:

[JavaScript] 纯文本查看 复制代码
//html5 给typecho添加 复制代码 功能 
// by 兔子昂
var codeblocks = document.getElementsByTagName("pre")
//循环每个pre代码块,并添加 复制代码

for (var i = 0; i < codeblocks.length; i++) {
    //显示 复制代码 按钮
    currentCode = codeblocks[i]
    currentCode.style = "position: relative;"
    var copy = document.createElement("div")
    copy.style = "position: absolute;right: 4px;\
    top: 4px;background-color: white;padding: 2px 8px;\
    margin: 8px;border-radius: 4px;cursor: pointer;\
    box-shadow: 0 2px 4px rgba(0,0,0,0.05), 0 2px 4px rgba(0,0,0,0.05);"
    copy.innerHTML = "复制"
    currentCode.appendChild(copy)
    //让所有 "复制"按钮 全部隐藏
    copy.style.visibility = "hidden"
}


for (var i = 0; i < codeblocks.length; i++) {


    !function (i) {
        //鼠标移到代码块,就显示按钮
        codeblocks[i].onmouseover = function () {
            codeblocks[i].childNodes[1].style.visibility = "visible"
        }

        //执行 复制代码 功能
        function copyArticle(event) {
            const range = document.createRange();

            //范围是 code,不包括刚才创建的div
            range.selectNode(codeblocks[i].childNodes[0]);

            const selection = window.getSelection();
            if (selection.rangeCount > 0) selection.removeAllRanges();
            selection.addRange(range);
            document.execCommand('copy');

            codeblocks[i].childNodes[1].innerHTML = "复制成功"
            setTimeout(function () {
                codeblocks[i].childNodes[1].innerHTML = "复制"
            }, 1000);
            //清除选择区
            if (selection.rangeCount > 0) selection.removeAllRanges(); 0
        }
        codeblocks[i].childNodes[1].addEventListener('click', copyArticle, false);

    }(i);

    !function (i) {
        //鼠标从代码块移开 则不显示复制代码按钮
        codeblocks[i].onmouseout = function () {
            codeblocks[i].childNodes[1].style.visibility = "hidden"
        }
    }(i);
}



使用:
github地址:https://github.com/Tuziang/CodeCopy

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
kang_alone + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我来试试 发表于 2021-1-15 12:40
Auandzu 发表于 2019-11-13 21:19
步不知道为什么就是用不了

Plugin.php  文件里面的  第78行
[PHP] 纯文本查看 复制代码
		$path = Helper::options()->pluginUrl . '/CodeCopy/';


换成这个就行了,因为大小写的问题,找不到对应的JS文件
izz520 发表于 2019-7-23 15:03
呢喃 发表于 2019-7-23 15:08
ray1003 发表于 2019-7-23 15:28
收藏了,谢谢楼主分享
libertarian 发表于 2019-7-23 15:32
感谢楼主,收藏了。
黑化琉璃 发表于 2019-7-23 17:33
感谢楼主,收藏了。
aiask 发表于 2019-7-23 22:10
感谢楼主的开源精神和无私奉献,能帮助很多人,
Auandzu 发表于 2019-11-13 21:19
步不知道为什么就是用不了
我来试试 发表于 2021-1-15 12:38
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表