简介
1.使得点击【登录复制】后可以直接复制,而不用登录。
2.设置整个页面的文本为可选中以及复制,而不用登录。
3.下载链接
元数据介绍
-
@name
:脚本的名称。 -
@namespace
:脚本的命名空间或者作者的网站地址。 -
@version
:脚本的版本号。 -
@description
:脚本的描述,包括功能的简要说明等内容。 -
@author
:脚本的作者。 -
@match
:脚本要匹配的网址,如匹配CSDN博客文章详情页面。 -
@icon
:脚本在油猴脚本管理器中显示的图标,此处为CSDN的网站图标。 -
@license
:脚本的许可证类型,这里是MIT许可证:允许使用、修改、分发、再授权和/或销售脚本的副本,只要在所有副本中包含了原始许可证和版权声明。 -
@thisURL
:脚本的安装页面链接,这里是脚本在Greasy Fork网站的页面链接。 -
@downloadURL
:脚本的下载链接,这里是脚本在Greasy Fork网站的下载链接。 -
@updateURL
:脚本的更新链接,这里是脚本在Greasy Fork网站的更新链接。
@icon:
可以放网站图标的URL地址,获取方法为:F12查看网页源代码,head标签下有个link标签,有icon标识,href处的链接就是。
文章来源:https://www.toymoban.com/news/detail-849580.html
@thisURL:
我自己添加的标签。
@downloadURL
和@updateURL:
无需添加,发布后Greasy Fork会自己添加。
清爽版代码
// ==UserScript== // @name CSDN免登录复制【归忆_AC】 // @namespace https://blog.csdn.net/qq1677852098 // @version 1.2 // @description 1.使得点击【登录复制】后可以直接复制,而不用登录; 2.设置整个页面的文本为可选中以及复制。 // @author guiyi_ac // @match https://blog.csdn.net/*/article/details/* // @icon https://g.yssmx.com/static/logo/favicon32.ico // @license MIT // @thisURL https://greasyfork.org/zh-CN/scripts/487806-csdn%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6-%E5%BD%92%E5%BF%86-ac // @downloadURL https://update.greasyfork.org/scripts/487806/CSDN%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6%E3%80%90%E5%BD%92%E5%BF%86_AC%E3%80%91.user.js // @updateURL https://update.greasyfork.org/scripts/487806/CSDN%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6%E3%80%90%E5%BD%92%E5%BF%86_AC%E3%80%91.meta.js // ==/UserScript== (function() { 'use strict'; var elements = document.getElementsByTagName('pre'); for (var i = 0; i < elements.length; i++) { var element = elements[i]; element.innerHTML = element.innerHTML.replace(/signin/g, 'copyCode'); } window.oncontextmenu = document.oncontextmenu = document.oncopy = null; var bodies = document.querySelectorAll('body'); bodies.forEach(function(body) { var displayStyle = body.style.display; body.style.display = 'none'; void body.offsetWidth; body.style.display = displayStyle; }); [...document.querySelectorAll('body, body *')].forEach(dom => { ['onselect', 'onselectstart', 'onselectend', 'ondragstart', 'ondragend', 'oncontextmenu', 'oncopy'].forEach(ev => dom.removeAttribute(ev)); dom.style['user-select'] = 'auto'; }); })();
详细版代码
// ==UserScript== // @name CSDN免登录复制【归忆_AC】 // @namespace https://blog.csdn.net/qq1677852098 // @version 1.1 // @description 1.使得点击【登录复制】后可以直接复制,而不用登录; 2.设置整个页面的文本为可选中以及复制。 // @author guiyi_ac // @match https://blog.csdn.net/*/article/details/* // @icon https://g.yssmx.com/static/logo/favicon32.ico // @license MIT // @thisURL https://greasyfork.org/zh-CN/scripts/487806-csdn%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6-%E5%BD%92%E5%BF%86-ac // @downloadURL https://update.greasyfork.org/scripts/487806/CSDN%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6%E3%80%90%E5%BD%92%E5%BF%86_AC%E3%80%91.user.js // @updateURL https://update.greasyfork.org/scripts/487806/CSDN%E5%85%8D%E7%99%BB%E5%BD%95%E5%A4%8D%E5%88%B6%E3%80%90%E5%BD%92%E5%BF%86_AC%E3%80%91.meta.js // ==/UserScript== //1.使得点击【登录复制】后可以直接复制,而不用登录------------------------------------------------------------ // 获取所有代码块的元素 var elements = document.getElementsByTagName('pre'); // 遍历所有元素 for (var i = 0; i < elements.length; i++) { // 获取当前元素 var element = elements[i]; // 替换所有的signin为copyCode,/g代表替换所有的signin element.innerHTML = element.innerHTML.replace(/signin/g, 'copyCode'); } //2.将整个页面设置为可编辑状态,可以自由地增删改-------------------------------------------------------------- //开启后会导致有的链接点击后无法跳转!!! /* //获取整个文档 let doc = document.querySelectorAll('*'); doc.forEach(c => { c.contentEditable = true; //设置文档为可编辑 }) */ //3.设置整个页面的文本为可选中以及复制----------------------------------------------------------------------- //取消了在窗口和文档级别上对右键菜单和复制操作的事件监听。通过将它们设置为 null,使得在网页中右键菜单和复制操作不再受到限制。 window.oncontextmenu = document.oncontextmenu = document.oncopy = null; //首先获取所有 <body> 元素,然后使用 forEach 循环遍历每个 <body> 元素,并将其 outerHTML 属性重新赋值为其当前值。 //这样做可以强制重新渲染页面,以便取消任何可能存在的事件监听或样式更改。 //这样子强制渲染会出错!!!!!比如使得点击事件失效。 // document.querySelectorAll('body').forEach(dom => dom.outerHTML = dom.outerHTML); // 获取所有 body 元素 var bodies = document.querySelectorAll('body'); // 遍历每个 body 元素 bodies.forEach(function (body) { // 保存当前 body 元素的 display 样式 var displayStyle = body.style.display; // 修改 body 元素的 display 样式为 'none' body.style.display = 'none'; // 强制重新渲染元素 void body.offsetWidth; // 将 display 样式恢复到原始值,触发重新渲染 body.style.display = displayStyle; }); //获取页面中所有的 <body> 元素及其所有子元素,并使用 forEach 循环遍历每个元素。 document.querySelectorAll('body, body *').forEach(dom => { //遍历每个元素时,这里移除了一系列事件属性,包括选择事件、拖拽事件、右键菜单事件和复制事件。 //通过调用 removeAttribute() 方法,将这些事件属性移除,以确保不会受到任何事件监听的限制。 ['onselect', 'onselectstart', 'onselectend', 'ondragstart', 'ondragend', 'oncontextmenu', 'oncopy'].forEach(ev => dom.removeAttribute(ev)); //将 user-select 样式属性设置为 'auto',以允许用户在页面中进行文本选择操作。 //通常情况下,网页开发者会使用 CSS 来控制用户是否可以选择文本,通过将 user-select 设置为 'auto',使得用户可以自由地选择文本。 dom.style['user-select'] = 'auto'; });
(by 归忆)文章来源地址https://www.toymoban.com/news/detail-849580.html
到了这里,关于【JavaScript】一个简单的油猴脚本——CSDN免登录复制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!