98版块帖子链接修改

发布于 2021-03-30 15:16

    上次写了个油猴脚本,用于隐藏98ID,避免被实验室的同学窥探到,一不小心上了十大。(真后悔当时没写个推文给自己涨涨粉
https://www.cc98.org/topic/5028596

// ==UserScript==// @name         CC98账号名隐匿// @namespace    cc98// @version      0.1// @description  隐藏98用户名,防止实验室同学在大屏幕上窥探到用户名// @author       茶包哥// @include      https://www.cc98.org/*// @icon         https://www.cc98.org/static/images/98LOGO.ico// @run-at       DOMContentLoaded// ==/UserScript==(function() {    'use strict';    var s=setInterval(function () {        var a=document.querySelector("#root > div > div.header > div > div > div.topBarRight > div.topBarUserInfo > div.topBarUserName");        if(a!=null){a.textContent="猜猜我是谁";clearInterval(s);};        var b=document.querySelector("#root > div > div.headerWithoutImage > div > div > div.topBarRight > div.topBarUserInfo > div.topBarUserName");        if(b!=null){b.textContent="猜猜我是谁";clearInterval(s);};}, 500);})();

    这次又写了个脚本,用于解决版块内帖子的打开问题。



    以前也尝试过写个js脚本解决一下,但是没有成功。昨晚又尝试了半天,还是没有成功,今天终于成功了。

方法一(失败):
    给标签<a>右键增加一个属性,target="_blank"。按道理讲,这种方法是常规的、正确的、可行的,但是98就是不一样,这个方法还就是行不通,毫无效果。不信可以自己尝试一下。

    我想,是不是所有的属性修改都是无效的呢?尝试了一下删掉style。这说明属性修改还是可以生效的。


方法二(成功了一部分):
    将原来的的标签<a>替换成新的标签<a>,href和style都设置成为和原来一样的。
// ==UserScript==// @name         CC98版块帖子链接修改// @namespace    cc98// @version      1.0// @description  修改链接,在新页面打开链接并跳转// @author       茶包哥// @include      https://www.cc98.org/board/*// @run-at       DOMContentLoaded// ==/UserScript==(function() {    'use strict';    var s=setInterval(function () {        for(var i=1;i<=30;i++){            var path="#root > div > div.board-body > div.board-list-body > div:nth-child("+String(i)+") > div.board-postItem-title";            var aPath=path+" > a";            // var p=document.querySelector("#root > div > div.board-body > div.board-list-body > div:nth-child(2) > div.board-postItem-title")            // var c=document.querySelector("#root > div > div.board-body > div.board-list-body > div:nth-child(2) > div.board-postItem-title > a")            var p=document.querySelector(path)            var c=document.querySelector(aPath)            var para = document.createElement("a");            para.setAttribute("href",c.href)            para.setAttribute("target","_blank")            para.setAttribute("style",c.getAttribute('style'))            var node = document.createTextNode(c.text);            para.appendChild(node);            p.replaceChild(para,c);        }    },1000);})();




方法三(成功):
    给所有的标签<a>增加onclick属性,同时要return false,阻止href的动作。
// ==UserScript==// @name         CC98版块帖子链接修改// @namespace    cc98// @version      1.0// @description  修改链接,在新页面打开链接并跳转// @author       茶包哥// @include      https://www.cc98.org/*// @run-at       DOMContentLoaded// ==/UserScript==(function() {    'use strict';    setInterval(function(){        for(var i=1;i<=30;i++){            var a=document.querySelector("#root > div > div.board-body > div.board-list-body > div:nth-child("+String(i)+") > div.board-postItem-title > a");            if(a!=null){                a.setAttribute('onclick',"window.open('"+a.href+"');return false;");            }        }    },1000)})();

    按理说,上面的

@include      https://www.cc98.org/*

应该写成:

@include      https://www.cc98.org/board/*

    但是这样的话,进入版块界面之后,必须刷新一下,脚本才会生效,不知道为啥。。。

    关于油猴脚本是什么、怎么使用,可以自行百度或者参考浙江大学文件下载小助手

    至于为什么方法一不能成功,至今想不明白,只能说一句,98技术组真的牛,能解答一下嘛


    想不明白为什么,于是写了个脚本定时按一下Enter键。

    今天又想了一下,难道是多线程的问题?加了个开启多线程的参数,还是不行,总是时不时会卡住。尝试了把某个线程拎出来单独写个脚本,还是不行。

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材