GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 1002|回复: 47
收起左侧

[功能优化] [油猴脚本]我的收藏|收藏页 翻页优化

[复制链接] |关注本帖

萨菲罗斯黑龙幼崽接近阴谋森林羊男幽光蓝龙土豆开花了辐射:新维加斯

    本帖最后由 阿不思的落胤 于 2024-7-22 20:33 编辑

    众所周知,平时看帖的时候是可以方向键左右按来翻页的,但是, 我的收藏|收藏页 是不支持的,如果想在自己的收藏中找到自己印象中的那个主题,那就只能一次又一次点击下一页,然后往下滑,再点击下一页........

    本次功能优化就是简化收藏页的翻页操作,此页面也可以用左右方向键来翻页了,并且翻页内容会直接追加到底部,页面无需刷新!!!


    @Name @Name @match


    油猴脚本如下(也许后续会继续优化,但是应该会新开一帖,新开的话本帖会放链接)(我真的幻想你坛要是支持markdown该多方便啊...id叫Name的和id叫Match的真的很烦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
    (如果下面有@开头的内容被<xxx></xxx>包围了的话自己去掉吧,我懒得弄了)
    1. // ==UserScript==
    2. // @name      GM论坛收藏页方向键控制上一页下一页
    3. // @namespace    www.gamemale.com
    4. // @version      2024-07-20
    5. // @description  个人收藏界面,左方向键上一页,右方向键下一页
    6. // @author       阿不思的落胤
    7. //  @match     https://www.gamemale.com/home.php?mod=space&do=favorite&view=me
    8. // @match        https://www.gamemale.com/home.php?mod=space&uid=*&do=favorite*
    9. // @grant        none
    10. // ==/UserScript==

    11. (function() {
    12.     'use strict';
    13.     var nxtButton = document.getElementsByClassName("nxt")[0];
    14.     var prevButton = document.getElementsByClassName("prev")[0];
    15.     //url模板,填id和page后发请求要用
    16.     var urlPattern = 'home.php?mod=space&uid=*&do=favorite&type=all&page=*';
    17.     //当前浏览器地址
    18.     var curLocation = document.location;
    19.     //当前域名
    20.     var curOrigin = curLocation.origin;
    21.     //当前请求参数字符串
    22.     var curSearch = curLocation.search;
    23.     //当前请求参数
    24.     var curSeachParams = new URLSearchParams(curSearch);

    25.     //获取id,此处获取方式为下一页按钮的href中获取
    26.     var buttonHref;
    27.     //待添加对nxtButton的判空
    28.     if(nxtButton !== undefined){
    29.         buttonHref = nxtButton.href;
    30.     }else{
    31.         buttonHref = prevButton.href;
    32.     }
    33.     var uid;
    34.     var startIndex = buttonHref.indexOf('?')
    35.     var hrefSearchParams = new URLSearchParams(buttonHref.slice(startIndex));
    36.     uid = hrefSearchParams.get('uid');
    37.     //获取page
    38.     var page;
    39.     if (curSeachParams.has('page')){
    40.         //有参数则获取当前页
    41.         page = curSeachParams.get('page');
    42.     }else{
    43.         //否则默认第1页
    44.         page = '1';
    45.         //跳转到有页数的url
    46.         document.location.href = urlPattern.replace('uid=\*','uid='+uid).replace('page=\*','page=' + page);
    47.     }

    48.     var pageInt = parseInt(page);
    49.     var nxtPage = pageInt + 1;
    50.     var prevPage = pageInt - 1;
    51.     var newUrl;
    52.     document.addEventListener("keyup",function(e){
    53.         if (e.key === "ArrowRight"){
    54.             getPageData(true);
    55.         }
    56.         if (e.key === "ArrowLeft"){
    57.             getPageData(false);
    58.         }

    59.     },false);
    60.     //定义一个请求下一页数据的函数
    61.     function getPageData(direction){
    62.         //如果的前翻页
    63.         if(!direction){
    64.             if(prevPage < 1){
    65.                 alert("不能再往前翻了,已经到头了");
    66.                 return;
    67.             }
    68.             newUrl = urlPattern.replace('uid=\*','uid='+uid).replace('page=\*','page=' + prevPage--);
    69.         }
    70.         else{
    71.             newUrl = urlPattern.replace('uid=\*','uid='+uid).replace('page=\*','page=' + nxtPage++);
    72.         }
    73.         let xhr = new XMLHttpRequest();
    74.         xhr.open('post',curOrigin+'/'+newUrl,true);//异步
    75.         xhr.setRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7');
    76.         xhr.reponseType = 'document';
    77.         xhr.overrideMimeType('text/html');
    78.         xhr.addEventListener('load',function(){
    79.             if(xhr.readyState === 4){
    80.                 if((xhr.status >= 200 && xhr.status < 300)
    81.                    || (xhr.status === 304)){
    82.                     var parser = new DOMParser();
    83.                     getAndAppendResponse(parser.parseFromString(xhr.responseText, "text/html"),this.direction);

    84.                 }
    85.                 //状态码不对的话尝试获取服务器返回的信息
    86.                 else{
    87.                     console.error(xhr.statusText);
    88.                     alert(xhr.statusText);
    89.                 }
    90.             }
    91.         });
    92.         //10秒超时
    93.         xhr.timeout = 10 * 1000;
    94.         xhr.send();
    95.     }

    96.     //定义一个操作返回数据DOM的函数
    97.     function getAndAppendResponse(XML,dirction){
    98.         if(!XML){
    99.             return;
    100.         }
    101.         //debugger;
    102.         let responseUl = XML.getElementById('favorite_ul');
    103.         if(!responseUl){
    104.             alert("不能再往后翻了,已经到底了");
    105.             return;
    106.         }
    107.         var FavoriteUl = document.getElementById('favorite_ul');
    108.         let responseLis = responseUl.childNodes;
    109.         responseLis.forEach(
    110.             function(childNode){
    111.                 FavoriteUl.append(childNode);
    112.             }
    113.         );

    114.         if (curSeachParams.has('page')){
    115.             history.replaceState(null,'',curOrigin+'/'+newUrl);
    116.         }else{
    117.             //todo
    118.         }
    119.     }

    120. })();
    复制代码




    评分

    参与人数 3血液 +5 追随 +3 堕落 +1 收起 理由
    li漠北 + 1 很给力!
    GMagels + 1
    Morphyus + 5 + 1 + 1

    查看全部评分

    已有1人关注本帖

    liuhuo0
    回复

    使用道具 举报

    百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

      很适合收藏夹爆满的坛友使用呢
        收起(1)
      回复

      使用道具 举报

      金猪猪储蓄罐㊖『随时随地开启!』漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

        回复

        使用道具 举报

        金猪猪储蓄罐㊖闪耀的魔仙棒石鬼面双贤辉石头罩无尽的怀表人鱼之泪脉律辐石劫掠核芯瓮中能言蛙遗留之人的城堡

          不知道有没有收藏夹分类功能
          回复

          使用道具 举报

          小丑与格雷与星光璀璨『逆境中的幸运女神』裸体克里斯幸运女神的微笑不洁圣子小小安全帽璀璨金币『樱花树灵』

            回复

            使用道具 举报

            熔岩鹰远古石碑大黄蜂(ChevroletCamaro).普隆普特·阿金塔姆御医神兔擎天柱(Peterbilt389).脉律辐石奇怪的宝箱亚当‧简森天灾骑士

              回复

              使用道具 举报

              卡斯迪奥.猎鹰图腾山猫图腾眼镜蛇图腾森林羊男『还乡歌』牧羊人尤利西斯.

                kook 发表于 2024-7-22 21:31:50 | 显示全部楼层 |取消关注该作者的回复
                回复

                使用道具 举报

                不洁圣子古老金币瑞雪兆丰年,生灵万物新近地夜航达拉然Act of Ultimate Trust最终幻想XIV

                  回复

                  使用道具 举报

                  净化污秽的天照驯化红龙幼崽香喷喷的烤鸡小小安全帽驯化黑龙幼崽幽浮起司煲月影狼妙手空空

                    Name Match如果有图标还有icon三个都出过错XD 页面加载不用刷新当前已加载内容很方便,不用来回翻了。
                    回复

                    使用道具 举报

                    男色时代梅克军徽幸运女神的微笑壶中冰心『逆境中的幸运女神』果体76雄躯的昇格

                      回复

                      使用道具 举报

                      男巫之歌撑破的储蓄罐『私有海域』『钜鲸』『星河碎片』『召唤好运的角笛』『交钥匙了!』『矩阵谜钥Ⓖ』十周年扭蛋 - 红『落樱缤纷』

                        回复

                        使用道具 举报

                        真理世界灵光补脑剂我的天使GM吸血伯爵吃饱金币的Doge阿拉喵?神灯和你一起飞行的皮卡丘小小舞台永浴爱河

                          回复

                          使用道具 举报

                          阿怪GHOST吃饱金币的Doge秘密空瓶裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯史莱姆牧场虚空之海的鲸不朽之恋

                            回复

                            使用道具 举报

                            春之歌甘道夫·先圣仁心黄金树的恩惠熔岩鹰冰海钓竿狩猎用小刀森林鹿幸运女神的微笑

                              回复

                              使用道具 举报

                              遗忘之水小丑与格雷与星光璀璨『落樱缤纷』『灰域来音』『眼榴』『钟楼盐水棒冰』『泥潭颂唱者』『逆境中的幸运女神』『南瓜拿铁』粉猪猪储蓄罐㊖

                                回复

                                使用道具 举报

                                死亡化身格拉迪欧拉斯穿过的白袜Drover.男用贞操带卡洛斯·奥利维拉Chris Mazdzer.Life of Water『落樱缤纷』

                                  回复

                                  使用道具 举报

                                  桑克瑞德·沃特斯野兽之子裸体克里斯春之歌风雪之家龙鳞石官复原职不灭的蓝宝石

                                    我甚至还不知道左右划可以翻页,不过也感谢楼主写脚本啦
                                    回复

                                    使用道具 举报

                                    裸体克里斯站长の守护克里斯‧雷德菲尔德Chris Redfield in Uroboros凯登‧阿兰科史莱姆牧场吃饱金币的Doge但丁肥皂皮尔斯‧尼凡斯

                                      回复

                                      使用道具 举报

                                      【夏日限定】夏日的泰凯斯灵魂之椅史莱姆牧场阿拉喵?神灯和你一起飞行的皮卡丘秘密空瓶吃饱金币的Doge深渊遗物男巫之歌丹雀衔五穗,人间始丰登

                                        回复

                                        使用道具 举报

                                        石鬼面小丑与格雷与星光璀璨瑞雪兆丰年,生灵万物新丹妮莉丝·坦格利安刀锋女王 - 归宿岛田源氏官复原职龙腾世纪:审判荒野大镖客:救赎 II

                                          回复

                                          使用道具 举报

                                          您需要登录后才可以回帖 登录 | 立即注册

                                          本版积分规则

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2024-11-21 18:58 , Processed in 0.134479 second(s), 144 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表