// ==UserScript== // @name 自动无缝翻页 // @name:zh-CN 自动无缝翻页 // @name:zh-TW 自動無縫翻頁 // @name:en AutoPager // @version 4.9.0 // @author X.I.U // @description 无缝拼接下一页内容(瀑布流,追求小而美),目前支持:【所有「Discuz!、Flarum、phpBB、Xiuno、XenForo、NexusPHP」论坛】【百度、谷歌、必应、搜狗、微信、360、Yahoo、Yandex 等搜索引擎】、贴吧、豆瓣、知乎、微博、NGA、V2EX、B 站(Bilibili)、煎蛋网、糗事百科、龙的天空、起点中文、IT之家、千图网、Pixabay、Pixiv、3DM、游侠网、游民星空、NexusMods、Steam 创意工坊、CS.RIN.RU、BT之家、萌番组、动漫花园、樱花动漫、爱恋动漫、AGE 动漫、Nyaa、SrkBT、RARBG、SubHD、423Down、不死鸟、扩展迷、小众软件、【动漫狂、漫画猫、漫画屋、漫画 DB、动漫之家、拷贝漫画、包子漫画、Mangabz、Xmanhua 等漫画网站】、PubMed、Z-Library、GreasyFork、Github、StackOverflow(以上仅一小部分,更多的写不下了... // @description:zh-TW 無縫拼接下一頁內容(瀑布流,追求小而美),支持各種論壇、搜索引擎、漫畫網站~ // @description:en Seamlessly stitch next page content (waterfall)~ // @match *://*/* // @connect www.ykmh.com // @connect www.xuexiniu.com // @connect bbs.xuexiniu.com // @connect www.tujigu.net // @connect weili.ooopic.com // @icon data:image/png;base64,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 // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_openInTab // @grant GM_getValue // @grant GM_setValue // @grant GM_notification // @grant window.onurlchange // @grant unsafeWindow // @license GPL-3.0 License // @run-at document-end // @namespace https://github.com/XIU2/UserScript // @supportURL https://github.com/XIU2/UserScript // @homepageURL https://github.com/XIU2/UserScript // @downloadURL none // ==/UserScript== (function() { 'use strict'; var menuAll = [ ['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❌ 已禁用 (点击对当前网站启用)', []], ['menu_thread', '帖子内自动翻页 (社区类网站)', '帖子内自动翻页 (社区类网站)', true], ['menu_page_number', '显示当前页码及点击暂停翻页', '显示当前页码及点击暂停翻页', true], ['menu_pause_page', '左键双击网页空白处暂停翻页', '左键双击网页空白处暂停翻页', false], ['menu_customRules', '自定义翻页规则', '自定义翻页规则', {}] ], menuId = [], webType = 0, curSite = {SiteTypeID: 0}, DBSite, SiteType, pausePage = true, pageNum = {now: 1, _now: 1}, locationC = false, nowLocation = '', lp = location.pathname; window.autoPage = {src_bF: src_bF, xs_bF: xs_bF} for (let i=0;i 0 && scrollTop + clientHeight < scrollHeight) { window.parent.scrollBy(0, delta*2); } }, false); } // 下一页URL curSite.pageUrl = ''; // 自动无缝翻页 pageLoading(); // -------------------------------------------------------- // [Discuz! 论坛] 判断各版块帖子列表类型 function discuzForum(m) { if (m == 'm') { // 手机版页面 if (getCSS('a.loadmore')) { curSite = DBSite.discuz_m_forum; } else if (getCSS('.threadlist')) { curSite = DBSite.discuz_m; curSite.pager.pageE = 'css;.threadlist > ul > li'; } else if (getCSS('[id^="normalthread_"]')) { curSite = DBSite.discuz_m; curSite.pager.pageE = 'css;[id^="normalthread_"]:not(.ZDlist)'; } if (curSite.SiteTypeID !== 0 && location.hostname === 'keylol.com') {curSite.history = false; locationC = true;} } else { if (getCSS('#autopbn')) { // 判断是否有 [下一页] 按钮 curSite = DBSite.discuz_forum; } else if (getCSS('#waterfall')) { // 判断是否为图片模式 if (!getCSS('#pgbtn, .pgbtn')) { // 如果各版块帖子列表已存在这个元素,说明自带了无缝翻页 curSite = DBSite.discuz_waterfall; waterfallStyle(); // 图片模式列表样式预处理 } } else { curSite = DBSite.discuz_guide; } } } // [Discuz! 论坛] 判断手机版帖子内 function discuzThreadM() { if (getCSS('[id^="pid"]')) { curSite = DBSite.discuz_m; curSite.pager.pageE = 'css;[id^="pid"], [id^="pid"]+div:not([id="post_new"])' } else if (getCSS('[id^="post_"]')) { curSite = DBSite.discuz_m; curSite.pager.pageE = 'css;[id^="post_"]'; } if (curSite.SiteTypeID !== 0 && location.hostname === 'keylol.com') {curSite.history = false; locationC = true;} } function discuz_() { if (getCSS('body[id="nv_forum"][class^="pg_"][onkeydown*="27"]')) { switch (getCSS('body[id="nv_forum"][class^="pg_"][onkeydown*="27"]').className) { case 'pg_forumdisplay': // < 各版块帖子列表 > discuzForum(); break; case 'pg_viewthread': // < 帖子内 > if (GM_getValue('menu_thread')) curSite = DBSite.discuz_thread; break; case 'pg_guide': // < 导读帖子列表等 > curSite = DBSite.discuz_guide; break; case 'pg_collection': // < 淘贴列表 > curSite = DBSite.discuz_collection; break; } } // 如果上面没有匹配的则继续 < 搜索结果 > if (curSite.SiteTypeID === 0) { if (indexOF('search') || getCSS('body[id="nv_search"][onkeydown*="27"]')) { if (indexOF('mobile=2', 's')) { // 手机版页面 curSite = DBSite.discuz_m; curSite.pager.pageE = 'css;.threadlist > ul > li'; locationC = true; } else { curSite = DBSite.discuz_search; } } } // 如果上面没有匹配的则继续 if (curSite.SiteTypeID === 0) { if (indexOF('.html')) { // 判断是不是静态网页(.html 结尾) if (indexOF('/forum-')) { // < 各版块帖子列表 > if (getXpath('//head/meta[@name="applicable-device" and @content="mobile"] | //head/title[contains(text(), "手机版")] | //head/link[contains(@href, "/mobile/")] | //head/script[contains(@src, "/mobile/")]')) { // 手机版页面 discuzForum('m'); } else { discuzForum(); } } else if (indexOF('/thread-')) { // < 帖子内 > if (getXpath('//head/meta[@name="applicable-device" and @content="mobile"] | //head/title[contains(text(), "手机版")] | //head/link[contains(@href, "/mobile/")] | //head/script[contains(@src, "/mobile/")]')) { // 手机版页面 if (GM_getValue('menu_thread')) discuzThreadM(); } else { if (GM_getValue('menu_thread')) curSite = DBSite.discuz_thread; } } } } // 如果上面没有匹配的则继续 if (curSite.SiteTypeID === 0) { if (indexOF('mod=forumdisplay', 's') || indexOF('forumdisplay.php')) { // < 各版块帖子列表 > if (indexOF('mobile=2', 's') || indexOF('mobile=yes', 's') || getXpath('//head/meta[@name="applicable-device" and @content="mobile"] | //head/title[contains(text(), "手机版")] | //head/link[contains(@href, "/mobile/")] | //head/script[contains(@src, "/mobile/")]')) { // 手机版页面 discuzForum('m'); } else { discuzForum(); } } else if (indexOF('mod=viewthread', 's') || indexOF('viewthread.php')) { // < 帖子内 > if (indexOF('mobile=2', 's') || getXpath('//head/meta[@name="applicable-device" and @content="mobile"] | //head/title[contains(text(), "手机版")] | //head/link[contains(@href, "/mobile/")] | //head/script[contains(@src, "/mobile/")]')) { // 手机版页面 if (GM_getValue('menu_thread')) discuzThreadM(); } else { if (GM_getValue('menu_thread')) curSite = DBSite.discuz_thread; } } else if (indexOF('mod=guide', 's')) { // < 导读帖子列表 > curSite = DBSite.discuz_guide; } else if(indexOF('mod=space', 's') && indexOF('do=thread', 's')) { // 别人的主题/回复 curSite = DBSite.discuz_youspace; } else if (indexOF('mod=collection', 's')) { // < 淘贴列表 > curSite = DBSite.discuz_collection; } else if (getCSS('#threadlist')) { // < 部分论坛的各板块 URL 是自定义的 > discuzForum(); } else if (getCSS('#postlist')) { // < 部分论坛的帖子内 URL 是自定义的 > if (GM_getValue('menu_thread')) curSite = DBSite.discuz_thread; } else { // 手机版判断 discuzForum('m'); if (curSite.SiteTypeID === 0) discuzThreadM(); } } } // [Discuz! 论坛] 图片模式列表样式预处理 function waterfallStyle() { let width = getCSS('#waterfall > li:first-child').style.width; if (width) insStyle(`#waterfall {height: auto !important; width: 100% !important;} #waterfall > li {width: ${width} !important; float: left !important; position: inherit !important; left: auto !important; top: auto !important;}`); } // [谷歌搜索] 的插入前函数(加载视频图片) function google_bF(pageElems) { if (!indexOF('tbm=nws', 's')){ pageElems.forEach(function (one) { getAllCSS('a[aria-label][href*="https://www.youtube.com/watch?v="]').forEach(function (one1) { let img = getCSS('img', one1) if (img) img.src = `https://i.ytimg.com/vi/${one1.href.split('?v=')[1]}/mqdefault.jpg` }) }); } return pageElems } // [必应搜索] 的插入前函数(加载网站图标) function bing_bF(pageElems) { if (!getCSS('.b_title > a.sh_favicon')) { insStyle('.b_title > a.sh_favicon {display: none !important;}'); delete curSite.function //console.log(curSite) return pageElems } pageElems.forEach(function (one) { getAllCSS('div.rms_iac[data-src]').forEach(function (one1) { one1.outerHTML = `全球 Web 图标`; }) }); return pageElems } // [百度贴吧](发帖按钮点击事件) function baidu_tieba_1() { let button = getCSS('.tbui_aside_fbar_button.tbui_fbar_post > a'); if (button) { button.remove(); getCSS('li.tbui_aside_fbar_button.tbui_fbar_down').insertAdjacentHTML(getAddTo(4), '
  • ') button = getCSS('.tbui_aside_fbar_button.tbui_fbar_post > a'); if (button) { button.onclick = function(){ let button2 = getCSS('div.edui-btn.edui-btn-fullscreen.edui-btn-name-portrait'); if (button2) {button2.click();} else {alert('提示:登录后才能发帖!');} return false; } } } } // [百度贴吧] 插入数据 function baidu_tieba_insertE(pageElems, type) { if (!pageElems) return // 获取