|
1 | 1 | // ==UserScript== |
2 | 2 | // @name 自动无缝翻页 |
3 | | -// @version 3.3.8 |
| 3 | +// @version 3.3.9 |
4 | 4 | // @author X.I.U |
5 | 5 | // @description 无缝拼接下一页内容(瀑布流),目前支持:[所有「Discuz!、Flarum、phpBB、Xiuno、XenForo、DUX/XIU/D8/Begin(WP主题)」网站]、百度、谷歌、必应、搜狗、头条搜索、360 搜索、微信搜索、贴吧、豆瓣、微博、NGA、V2EX、B 站(Bilibili)、蓝奏云、煎蛋网、糗事百科、龙的天空、起点小说、IT之家、千图网、Pixabay、3DM、游侠网、游民星空、NexusMods、Steam 创意工坊、CS.RIN.RU、片库、茶杯狐、NO视频、低端影视、奈菲影视、音范丝、BT之家、萌番组、动漫花园、樱花动漫、爱恋动漫、AGE 动漫、Nyaa、SrkBT、RARBG、SubHD、423Down、不死鸟、扩展迷、极简插件、小众软件、漫本、动漫狂、漫画猫、漫画 DB、动漫之家、拷贝漫画、包子漫画、古风漫画网、Mangabz、PubMed、GreasyFork、Github、StackOverflow(以上仅一小部分,更多的写不下了... |
6 | 6 | // @match *://*/* |
|
76 | 76 | function setDBSite() { |
77 | 77 | /* |
78 | 78 | 自动翻页规则 |
79 | | - locationChange: 对于使用 pjax 技术的网站,需要监听 URL 变化来重新判断翻页规则 |
| 79 | + locationChange: 对于使用 pjax 技术的网站,需要监听 URL 变化来重新判断翻页规则(只能放在 functionStart 中) |
80 | 80 |
|
81 | | - insStyle: 要插入网页的 CSS Style 样式 |
82 | | - hiddenPN: 不显示脚本左下角的页码 |
83 | | - type: |
| 81 | + functionStart: 匹配该网站域名时要执行的函数(一般用于根据 URL 分配相应翻页规则) |
| 82 | + insStyle: 要插入网页的 CSS Style 样式 |
| 83 | + hiddenPN: 不显示脚本左下角的页码 |
| 84 | +
|
| 85 | + type: |
84 | 86 | 1 = 由脚本实现自动无缝翻页 |
85 | 87 | 2 = 网站自带了自动无缝翻页功能,只需要点击下一页按钮即可 |
86 | 88 | nextText: 按钮文本,当按钮文本 = 该文本时,才会点击按钮加载下一页(避免一瞬间加载太多次下一页) |
87 | 89 | nextTextOf: 按钮文本的一部分,当按钮文本包含该文本时,才会点击按钮加载下一页(避免一瞬间加载太多次下一页) |
88 | 90 | nextHTML: 按钮内元素,当按钮内元素 = 该元素内容时,才会点击按钮加载下一页(避免一瞬间加载太多次下一页) |
89 | | - interval: 点击间隔时间,对于没有按钮文字变化的按钮,可以手动指定间隔时间,单位:ms |
| 91 | + interval: 点击间隔时间,对于没有按钮文字变化的按钮,可以手动指定间隔时间(单位 ms) |
90 | 92 | isHidden: 只有下一页按钮可见时(没有隐藏),才会点击 |
91 | 93 | 3 = 依靠元素距离可视区域底部的距离来触发翻页 |
92 | 94 | scrollE: 作为基准的元素(一般为底部页码元素) |
93 | | - scrollD: 基准元素 减去 可视区域底部 |
94 | | - 4 = 部分简单的动态加载类网站 |
| 95 | + scrollD: = 基准元素 - 可视区域底部 |
| 96 | + 4 = 动态加载类网站(只能实现简单的) |
95 | 97 | insertE: 插入元素的函数 |
96 | | -
|
97 | | - insertP: |
| 98 | + nextL: 下一页链接所在元素 |
| 99 | + pageE: 要获取的主体内容 |
| 100 | + insertP: 主体内容插入的位置 |
98 | 101 | 1 = 插入该元素本身的前面; |
99 | 102 | 2 = 插入该元素当中,第一个子元素前面; |
100 | 103 | 3 = 插入该元素当中,最后一个子元素后面; |
101 | 104 | 4 = 插入该元素本身的后面; |
102 | 105 | 5 = 插入该元素末尾(针对小说网站等文本类的) |
103 | | - scriptT: 单独插入 <script> 标签 |
| 106 | + replaceE: 要替换为下一页内容的元素(比如页码) |
| 107 | + scriptT: 单独插入 <script> 标签 |
104 | 108 | 1 = 下一页的所有 <script> 标签 |
105 | 109 | 2 = 下一页主体元素同级 <script> 标签 |
106 | 110 | 3 = 下一页主体元素同级 <script> 标签(远程文件) |
107 | 111 | 4 = 下一页主体元素子元素 <script> 标签 |
108 | | - history: 添加历史记录 并 修改当前 URL |
| 112 | + history: 添加历史记录 并 修改当前 URL(如何和 locationChange 同用,需要改为函数根据情况返回 true / false) |
109 | 113 | forceHTTPS: 下一页链接强制 HTTPS |
110 | | - scrollD:数值越大,滚动条触发点越靠上(越早开始翻页),一般是访问网页速度越慢,该值就需要越大(如果 Type = 3,则相反) |
| 114 | + scrollD: 数值越大,滚动条触发点越靠上(越早开始翻页),一般是访问网页速度越慢,该值就需要越大(如果 Type = 3,则相反) |
| 115 | + interval: 翻页后间隔时间(单位 ms) |
111 | 116 |
|
112 | | - function: |
| 117 | + function: |
113 | 118 | bF = 插入前执行函数; |
114 | 119 | aF = 插入后执行函数; |
115 | 120 | pF = 参数 |
|
4346 | 4351 | pF: [0, 'img[data-src]', 'data-src'] |
4347 | 4352 | } |
4348 | 4353 | }, // 美女推 - 分类页 |
| 4354 | + mzitu: { |
| 4355 | + host: 'www.mzitu.com', |
| 4356 | + functionStart: function() {if (/\/\d+/.test(location.pathname)) {curSite = DBSite.mzitu;document.querySelector('.main-image a[href]').href = 'javascript:void(0);'} else {curSite = DBSite.mzitu_list;}}, |
| 4357 | + pager: { |
| 4358 | + type: 1, |
| 4359 | + nextL: '//div[@class="pagenavi"]/a[contains(string(), "下一页")]', |
| 4360 | + pageE: 'css;.main-image img', |
| 4361 | + insertP: ['css;.main-image a', 3], |
| 4362 | + replaceE: 'css;.pagenavi', |
| 4363 | + scrollD: 1500 |
| 4364 | + } |
| 4365 | + }, // 妹子图 - 图片页 |
| 4366 | + mzitu_list: { |
| 4367 | + pager: { |
| 4368 | + type: 1, |
| 4369 | + nextL: 'css;.next.page-numbers', |
| 4370 | + pageE: 'css;.postlist > ul > li', |
| 4371 | + insertP: ['css;.postlist > ul', 3], |
| 4372 | + replaceE: 'css;.pagination', |
| 4373 | + scrollD: 1000 |
| 4374 | + }, |
| 4375 | + function: { |
| 4376 | + bF: src_bF, |
| 4377 | + pF: [0, 'img[data-original]', 'data-original'] |
| 4378 | + } |
| 4379 | + }, // 妹子图 - 分类/搜索页 |
4349 | 4380 | xiurenji: { |
4350 | 4381 | host: /.xiurenji./, |
4351 | 4382 | functionStart: function() {insStyle('img[src$=".gif"]:not([src*="logo"]) {display: none !important;}'); |
|
0 commit comments