您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
针对不同域名的网站,替换成自己使用的域名再打开。
// ==UserScript== /*jshint esversion: 6 */ // @name 南+跳转自己域名对应的其他资源网站 // @namespace http://tampermonkey.net/dva // @version 1.1.1 // @description 针对不同域名的网站,替换成自己使用的域名再打开。 // @author Dva // @match *://*.south-plus.net/read.php?tid* // @match *://*.north-plus.net/read.php?tid* // @match *://*.summer-plus.net/read.php?tid* // @match *://*.level-plus.net/read.php?tid* // @match *://*.south-plus.org/read.php?tid* // @match *://*.white-plus.net/read.php?tid* // @match *://*.snow-plus.net/read.php?tid* // @match *://*.imoutolove.me/read.php?tid* // @match *://*.spring-plus.net/read.php?tid* // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; // 把"hjd"冒号右边的双引号里替换成你用的2048域名,把"ch"冒号右边的双引号里替换成你用的村花地址,如果你使用的和我的一样则不用替换 const doms={ "hjd":"hp.ytu7.life", //2048网址 https://替换为中间这部分/2048/ "ch":"www.cunhua.sbs", //村花网址 https://替换为中间这部分/thread/ }; const regs={ "hjd":"2048", "ch1":"cunhua", "ch2":"huo.wtf", } const re = /\d{4,}\d/g; const aCss = { "cursor": "pointer", "textDecoration": "none", "color": "black", } const fontCss = { "fontWeight": "600", "fontFamily": "SF Pro Text,SF Pro Icons,Helvetica Neue,Helvetica,Arial,sans-serif", } const lang = { "one":"打开", "all":"打开所有", } let readTopic = document.getElementById("read_tpc"); let links = readTopic.getElementsByTagName("a"); if(links.length > 0){ let hasBasic = false; for(let l of links){ if(isBasic(l)){ hasBasic = true; } } if(hasBasic){ //添加打开全部链接的按钮 let btnCss = { "marginLeft":"10px", "fontSize":"15px", "position":"relative", } const topic = ele("subject_tpc").parentNode; const allBtn = create("a",lang.all); wrapEle(allBtn,btnCss) allBtn.style.top = "1px" allBtn.onclick=function(){ openAll(links); } topic.appendChild(allBtn); //添加每个打开链接的按钮 for(let l=0;l<links.length;l++){ if(isBasic(links[l])){ let btn = create("a",lang.one); wrapEle(btn,btnCss) btn.style.top = "-1px" btn.onclick=function(){ openSingle(links[l]); }; readTopic.insertBefore(btn,links[l].nextSibling); } } } } //打开全部链接 function openAll(links){ for(let link of links){ openSingle(link) } } //打开单个链接 function openSingle(link){ if(isHjd(link)){ window.open(link.href.replace(link.href.split("/")[2],doms.hjd)); }else if(isCh(link)){ window.open("https://"+doms.ch+"/thread-"+link.href.match(re)[0]+"-1-1.html"); } } //判断是否是hjd的链接 function isHjd(link){ return link.href.split("/")[3]==regs.hjd; } //判断是否是cunhua function isCh(link){ let reg1 = new RegExp(regs.ch1); let reg2 = new RegExp(regs.ch2); return reg1.test(link) || reg2.test(link); } //判断是否是2048或cunhua的帖子 function isBasic(link){ return isHjd(link) || isCh(link); } //设置hover function hover(ele, basic = "black", dest = "rgb(52, 152, 219)") { ele.onmousemove = function () { if (this.style.color == basic) { this.style.color = dest; } } ele.onmouseleave = function () { if (this.style.color == dest) { this.style.color = basic; } } } function hovers(eles, basic = "black", dest = "rgb(52, 152, 219)") { eles.forEach(ele => { hover(ele, basic, dest) }); } function create(type, text = null) { let ele = document.createElement(type) if (text) ele.textContent = text; return ele; } function setCss(ele, styles=null) { if(!styles) return; for (var i in styles) { ele.style[i] = styles[i]; } } function setCsses(eles, styles) { eles.forEach(ele => { setCss(ele, styles) }); } function setFont(ele) { setCss(ele, fontCss) } function wrapEle(ele, styles=null, basic = "black", dest = "rgb(52, 152, 219)") { setFont(ele) setCss(ele, aCss) setCss(ele, styles) hover(ele, basic, dest) } function ele(id, parent = null) { return parent ? parent.getElementById(id) : document.getElementById(id) } function eles(name, type = "cls", parent = null) { if (parent) { switch (type) { case "cls": return parent.getElementsByClassName(name); case "name": return parent.getElementsByName(name); case "tag": return parent.getElementsByTagName(name); } } else { switch (type) { case "cls": return document.getElementsByClassName(name); case "name": return document.getElementsByName(name); case "tag": return document.getElementsByTagName(name); } } } })();