吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

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

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





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


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


具体JavaScript代码:

[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//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] 纯文本查看 复制代码
1
$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, 2025-5-21 07:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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