|
本帖最后由 thh866 于 2024-11-17 01:20 编辑
抽空整了个用处不那么大的脚本蹭蹭勋章
功能
点击勋章图片或文本,会直接跳转到博物馆对应页面
生效范围
1、勋章商城的相关页面,为图片增加了链接;
2、勋章商城(存在勋章记录)的相关页面,为勋章名称增加了链接;
3、帖子页面,删除了用户头像下方勋章向勋章商城的跳转,并为图片绑定点击事件进行跳转;
实现代码
@Name
- // ==UserScript==
- // [url=home.php?mod=space&uid=668096]@Name[/url] 博物馆传送门
- // @namespace https://www.gamemale.com/space-uid-679233.html
- // @homepage https://www.gamemale.com/thread-144398-1-1.html
- // @supportURL https://www.gamemale.com/thread-144398-1-1.html
- // @version 2024-09-22
- // @description Click to jump!
- // @author thh866
- // @match https://www.gamemale.com/wodexunzhang-showxunzhang.html*
- // @match https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&fid=*
- // @match https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&action=*
- // @match https://www.gamemale.com/thread-*
- // @match https://www.gamemale.com/forum.php?mod=viewthread&tid*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面的勋章图片的点击跳转开关
- const xunzhangSwitch = 1;
- // 帖子详情页用户头像下展示的勋章图片的点击跳转开关
- const threadSwitch = 1;
- // 二手市场页面的勋章记录的文字的点击跳转开关
- const recordSwitch = 1;
- // 勋章名称到帖子的映射表
- const name2url = {
- '詹姆斯·维加':'12025', '詹姆斯‧维加':'12025', '詹姆斯·维加(James Vega)':'12025',
- '奥伦':'12027', '奥伦(Auron)':'12027',
- '希德‧海温特':'12028', '希德‧海温特(Cid Highwind)':'12028',
- '吉姆‧雷诺':'12030', '吉姆‧雷诺(Jim Raynor)':'12030',
- '法卡斯':'12032', '法卡斯(Farkas)':'12032',
- // ...
- 'Zootopia':'144106', '启程':'144106', '全景':'144106', '沙漠':'144106', '冰原':'144106', '雨林':'144106',
- };
- // 判断是否是帖子页面的正则
- const reg = /^https:\/\/www.gamemale.com\/thread/;
- const reg2 = /^https:\/\/www.gamemale.com\/forum.php/;
- // 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面修改href
- // <a href="javascript:void(0);"> => <a href="..." target="_blank">
- function modifyHref(){
- if (1 == xunzhangSwitch){
- // debugger;
- let allDivs = document.getElementsByClassName('myimg');
- console.log(allDivs.length);
- for (let i = 0; i < allDivs.length; i++) {
- let aTag = allDivs[i].querySelector('a');
- let href = aTag.getAttribute('href');
- if (href && href.includes('javascript:void')) {
- let alt = aTag.querySelector('img').getAttribute('alt');
- console.log(alt);
- if (alt && name2url[alt])
- {
- aTag.setAttribute('href', href.replace('javascript:void(0);', 'thread-'+name2url[alt]+'-1-1.html'));
- aTag.setAttribute('target', '_blank');
- }
- }
- }
- }
- return 0;
- }
- // 帖子详情页为<img>增加Listener
- function addHref(){
- if (1 == threadSwitch){
- // debugger;
- let pTags = document.getElementsByClassName('md_ctrl wodexunzhang_img');
- for (let i = 0; i < pTags.length; i++) {
- let imgs = pTags[i].getElementsByTagName('img');
- console.log("[L" + (i + 1) + " : " + imgs.length + "]");
- for (let j = 0; j <imgs.length; j++){
- let alt = imgs[j].getAttribute('alt');
- if (alt){
- if (alt.includes('『随时随地开启!』')){
- let tip = imgs[j].getAttribute('tip');
- alt = (tip && tip.includes('知识')) ? '『任天堂Switch』红蓝√' : '『任天堂Switch』灰黑√'; // 旅程
- }
- else if(alt.includes('月光骑士')){
- let tip = imgs[j].getAttribute('tip');
- alt = (tip && tip.includes('回帖 血液')) ? '马克·史贝特' : '史蒂文·格兰特'; // 回帖 金币
- }
- if (name2url[alt]){
- imgs[j].addEventListener("click", function() {
- window.open('thread-'+name2url[alt]+'-1-1.html', '_blank');
- });
- console.log(alt);
- }
- else{
- console.log(alt+' not found!');
- }
- }
- }
- let aTag = pTags[i].getElementsByTagName('a')[0];
- let href = aTag.getAttribute('href');
- if (href && href.includes('wodexunzhang-showxunzhang.html')){
- aTag.setAttribute('href', href.replace('wodexunzhang-showxunzhang.html', 'javascript:void(0);'));
- }
- }
- }
- return 0;
- }
- // 勋章记录为<b>增加<a href...></a>
- function modifyTagB(){
- if (1 == recordSwitch){
- // debugger;
- let ul = document.getElementsByClassName('mn mymn');
- let li = ul[0].getElementsByTagName('li');
- for (let i = 0; i < li.length; i++) {
- let bTags = li[i].getElementsByTagName('b');
- for (let j = 0; j <bTags.length; j++){
- if (bTags[j] && name2url[bTags[j].textContent]){
- let aElement = document.createElement('a');
- aElement.href = 'thread-'+name2url[bTags[j].textContent]+'-1-1.html';
- aElement.textContent = bTags[j].textContent;
- aElement.target = '_blank';
- bTags[j].textContent = '';
- bTags[j].appendChild(aElement);
- break;
- }
- }
- }
- }
- return 0;
- }
- // 页面加载完再执行
- window.onload=function(){
- if (reg.test(window.location.href) || reg2.test(window.location.href)){
- addHref();
- }
- else{
- modifyHref();
- modifyTagB();
- }
- }
- })();
复制代码
使用方法
导入脚本,可根据需要修改开关配置
存在的问题
- 帖子页面由于部分勋章不同等级名称不同,这一部分数据未录入完整,无法跳转,这个有空会跟以前的帖子一起慢慢改,前提是能找到是哪个勋章
- 部分不在博物馆记录的勋章无法进行跳转(如剧情中的『活动代币』、『酒馆蛋煲』、『转生经筒』、『浪客便当』、『天价酬劳Ⓖ』等,装饰/特殊中的特殊-纯真护剑,故事中的被祝福的新旅程等等),没有就没必要跳了
- 页面未加载完全时,不生效,无能为力告辞
更新记录
2024/11/17
1、适配真人男从名称加点的修改;
2、适配白猪猪储蓄罐㊖、粉猪猪储蓄罐㊖、金猪猪储蓄罐㊖的名称;
2024/09/23
1、修改了由于万圣南瓜、丹·安博尔、汤姆·赫兰德和超人在博物馆和阿尔伯特·威斯克、鬼王酒吞童子、Scott Ryder和GM論壇初心者勛章的No重复导致的错误tid;
2、增加了帖子页面对两个『随时随地开启!』、月光骑士的区分;
3、补充了映射表;
使用中有问题欢迎反馈
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
已有1人关注本帖
|