GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 1045|回复: 39
收起左侧

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

[复制链接] |关注本帖

螺旋纹卵萨菲罗斯接近阴谋药剂背袋森林羊男土豆开花了黑龙幼崽

    本帖最后由 阿不思的落胤 于 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)
      回复

      使用道具 举报

      不曾寄出的信件『随时随地开启!』漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

        回复

        使用道具 举报

        不洁圣子璀璨金币小丑与格雷与星光璀璨牌中小丑 · 呼之欲出镜中小鸟无尽的怀表幸运女神的微笑遗留之人的城堡诞星之所

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

          使用道具 举报

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

            回复

            使用道具 举报

            『户口本: Lv7+』大黄蜂(ChevroletCamaro)远古石碑天灾骑士十字军护盾力量腕带诺克提斯·路西斯·伽拉姆黑暗消融刀锋女王 - 归宿叶卡捷琳娜大帝

              回复

              使用道具 举报

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

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

                使用道具 举报

                不洁圣子GHOST古老金币寻觅近地夜航达拉然Act of Ultimate Trust最终幻想XIV

                  回复

                  使用道具 举报

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

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

                    使用道具 举报

                    梅克军徽无瑕的回忆幸运女神的微笑男色时代『逆境中的幸运女神』One Ring果体76雄躯的昇格

                      回复

                      使用道具 举报

                      虚空之海的鲸『私有海域』『钜鲸』『星河碎片』『召唤好运的角笛』『交钥匙了!』『矩阵谜钥Ⓖ』十周年扭蛋 - 红『落樱缤纷』红心玉

                        回复

                        使用道具 举报

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

                          回复

                          使用道具 举报

                          咆哮诅咒敖蜃星黑暗交易阿怪GHOST吃饱金币的Doge秘密空瓶裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯

                            回复

                            使用道具 举报

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

                              回复

                              使用道具 举报

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

                                回复

                                使用道具 举报

                                哈尔‧乔丹桑克瑞德·沃特斯裸体克里斯春之歌不死斩【开门】官复原职不灭的蓝宝石安德森‧戴维斯

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

                                  使用道具 举报

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

                                    回复

                                    使用道具 举报

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

                                      回复

                                      使用道具 举报

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

                                        回复

                                        使用道具 举报

                                        亚索月影狼晓月终焉旅行骰子!卡利亚权杖

                                          我现在才知道帖子内可以用左右键翻页
                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-12-22 09:52 , Processed in 0.261891 second(s), 146 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表