Greasy Fork

来自缓存

Greasy Fork is available in English.

去除CSDN代码登录后复制及全文关注后查看的限制

解决未登录时CSDN不能复制代码的问题

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         去除CSDN代码登录后复制及全文关注后查看的限制
// @namespace    https://github.com/zhzhch335/myTampermonkey
// @version      1.7
// @description  解决未登录时CSDN不能复制代码的问题
// @author       zhzhch335
// @match        http*://blog.csdn.net/*/article/details/*
// @match        http*://*.blog.csdn.net/article/details/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=csdn.net
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Your code here...
    // 将所有代码区域变为可选
    document.querySelectorAll("code").forEach(function (item) {
        item.style = item.style + ";user-select: text !important;";
        return item;
    })
    // 将所有登录复制按钮变成全选
    document.querySelectorAll(".hljs-button").forEach(function (item) {
        item.dataset.title = "复制全部";
        return item;
    })
    try {
        // 重写登录复制方法
        window.hljs.signin = e => {
            var preNode = e.path.filter(item => item.tagName == "PRE")[0];
            // 选中一段文字
            let selection = window.getSelection();
            let range = document.createRange();
            range.selectNode(preNode);
            selection.removeAllRanges();
            selection.addRange(range);
            // 执行复制命令
            document.execCommand('copy', false, null);
            e.target.dataset.title = "复制成功";
            setTimeout(() => {
                e.target.dataset.title = "复制全部";
            }, 1000);
        }
        // 重写另一个登录方法(需要去除行号和版权声明)
        window.mdcp.signin = e => {
            // 避免拖动选择代码时直接触发了复制全部
            if (!e.target.className.includes("hljs-button")) return;
            var preNode = e.path.filter(item => item.tagName == "CODE")[0];
            // 选中一段文字
            let selection = window.getSelection();
            let range = document.createRange();
            range.selectNode(preNode);
            selection.removeAllRanges();
            selection.addRange(range);
            // 执行复制命令
            document.execCommand('copy', false, null);
            e.target.dataset.title = "复制成功";
            setTimeout(() => {
                e.target.dataset.title = "复制全部";
            }, 1000);
        }
    }
    catch { }
    // 解除关注才能查看全文的限制
    $('#article_content').removeAttr("style");
    $('.hide-article-box').remove();
})();