GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 692|回复: 43
收起左侧

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

[复制链接] |关注本帖

萨菲罗斯黑龙幼崽接近阴谋森林羊男散佚的文集土豆开花了辐射:新维加斯五花八门版块注入能量的波纹蓝蛋瑞雪兆丰年,生灵万物新

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

    使用道具 举报

    『泥潭颂唱者』不洁圣子官复原职实现梦想虚空之海的鲸永远的克叔近地夜航风物长宜永浴爱河百相千面-晦

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

      使用道具 举报

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

        回复

        使用道具 举报

        虚空之海的鲸诞星之所遗留之人的城堡裸体克里斯瓮中能言蛙内森·德雷克GM吸血伯爵安德森‧戴维斯吸血魔蝠雄躯的昇格

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

          使用道具 举报

          瑞雪兆丰年,生灵万物新近地夜航『樱花树灵』裸体克里斯GM論壇進階勛章小小安全帽森林羊男禽兽扒手不洁圣子璀璨金币

            回复

            使用道具 举报

            『泥潭颂唱者』山猫图腾猎鹰图腾眼镜蛇图腾璀璨金币雄躯的昇格16x43 隐形➁20x43 隐形➀82x43 隐形➀40x43 隐形➀

              回复

              使用道具 举报

              卡斯迪奥猎鹰图腾山猫图腾眼镜蛇图腾森林羊男『还乡歌』牧羊人尤利西斯库伦 (审判)质量效应三部曲

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

                使用道具 举报

                神秘商店贵宾卡茉香啤酒灵光补脑剂收到情书变骚喷雾千杯不醉不洁圣子『泥潭颂唱者』古老金币前身

                  回复

                  使用道具 举报

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

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

                    使用道具 举报

                    璀璨金币小小安全帽小小舞台幽浮起司煲不洁圣子近地夜航美恐:启程雄躯的昇格

                      回复

                      使用道具 举报

                      『泥潭颂唱者』『灰域来音』 『先知灵药:真视』杀意人偶『眼榴』可怖的眼球咆哮诅咒『不败之花』死灵之书

                        回复

                        使用道具 举报

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

                          回复

                          使用道具 举报

                          GHOST阿怪史莱姆养殖证书【夏日限定】夏日的泰凯斯幽灵竹筒裸体克里斯秘密空瓶极·龙の意GM吸血伯爵吃饱金币的Doge

                            回复

                            使用道具 举报

                            瑞雪兆丰年,生灵万物新森林羊男小小安全帽灵光补脑剂不洁圣子【新手友好】昆進璀璨金币香喷喷的烤鸡牧羊人黄色就是俏皮

                              回复

                              使用道具 举报

                              『泥潭颂唱者』小小安全帽金牌矿工『钟楼盐水棒冰』不洁圣子古老金币召唤兽拉姆近地夜航幽浮起司煲『眼榴』

                                回复

                                使用道具 举报

                                16x43 隐形➀穿过的白袜男用贞操带20x43 隐形➀40x43 隐形➀『泥潭颂唱者』

                                  回复

                                  使用道具 举报

                                  野兽之子裸体克里斯春之歌风雪之家龙鳞石官复原职不灭的蓝宝石安德森‧戴维斯征服之王岛田源氏

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

                                    使用道具 举报

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

                                      回复

                                      使用道具 举报

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

                                        回复

                                        使用道具 举报

                                        石鬼面我的冶金打火机鬼火竹筒瑞雪兆丰年,生灵万物新丹妮莉丝·坦格利安刀锋女王 - 归宿岛田源氏官复原职龙腾世纪:审判荒野大镖客:救赎 II

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

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

                                          GMT+8, 2024-9-8 11:18 , Processed in 0.133562 second(s), 148 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表