自动展开"显示更多"并加载分页内容
评论线程、产品评价、文档和搜索结果都喜欢把内容藏在"显示更多"按钮后面,或者把它拆分到无尽的页面上。用一条 JustZix JavaScript 规则,你可以自动展开并加载全部内容,然后在一次连续的滚动中阅读。
模式:点击直到它消失
一条自动展开规则反复做一件事:找到按钮、点击它、等待新内容、重复——直到按钮消失。下面是一个自包含的版本,带一个安全上限,使它永远无法无限循环。
function autoExpand(selector, maxClicks) {
var clicks = 0;
var timer = setInterval(function () {
var btn = document.querySelector(selector);
if (!btn || clicks >= maxClicks) {
clearInterval(timer);
return;
}
btn.click();
clicks++;
}, 800);
}
autoExpand('.show-more-button', 50);
800 毫秒的间隔给页面时间在两次点击之间渲染新条目。对慢速网站把它调大。maxClicks 上限 50 防止在无限信息流上失控循环。
按文本匹配按钮
如果按钮没有稳定的选择器,就按它的标签来找它。这个辅助函数返回第一个文本匹配的可见元素。
function findByText(words) {
var els = document.querySelectorAll('button, a, [role="button"]');
for (var i = 0; i < els.length; i++) {
var t = (els[i].textContent || '').trim().toLowerCase();
for (var j = 0; j < words.length; j++) {
if (t.indexOf(words[j]) !== -1 && els[i].offsetParent !== null) {
return els[i];
}
}
}
return null;
}
var timer = setInterval(function () {
var btn = findByText(['show more', 'load more', 'view more', 'see more']);
if (btn) { btn.click(); } else { clearInterval(timer); }
}, 800);
offsetParent !== null 检查跳过隐藏的按钮,所以当真正的按钮被移除时循环会正确结束。
一次展开每个折叠的章节
文档页面常常使用许多小切换(FAQ 手风琴、代码示例)。要一次全部打开,就点击每个当前折叠的切换。
var toggles = document.querySelectorAll('[aria-expanded="false"]');
toggles.forEach(function (t) {
t.click();
});
aria-expanded 属性是一项 Web 标准,所以这在大量无障碍组件上都有效,无需按站点的选择器。
自动加载下一页
对于经典的编号分页,你可以把下一页的条目拉进当前页。这个版本找到"下一页"链接,用 fetch 在同源上获取页面,并追加新的列表项。
function loadNextPage(listSelector, nextSelector) {
var next = document.querySelector(nextSelector);
var list = document.querySelector(listSelector);
if (!next || !list || !next.href) return;
fetch(next.href)
.then(function (r) { return r.text(); })
.then(function (html) {
var doc = new DOMParser().parseFromString(html, 'text/html');
var newList = doc.querySelector(listSelector);
if (newList) {
Array.prototype.forEach.call(newList.children, function (item) {
list.appendChild(item);
});
}
})
.catch(function () { /* 忽略网络错误 */ });
}
loadNextPage('.results-list', 'a[rel="next"]');
这只会从你已经所在的同一个网站请求页面——没有第三方调用。如果你想一次拉取好几页,就把它包在一个带点击上限的循环里。
实用建议
- 始终设置点击上限。无限滚动加上一个无上限的循环会永远获取下去。
- 可用时使用
aria-expanded选择器;它们比类名更能挺过网站改版。 - 测试间隔时机——太快你会在新内容稳定之前就点击。
- 对于有真正无限滚动的页面,展开一切会让标签页变重;改为分批展开。
在现成示例里找到即插即用的版本,或者下载 JustZix 开始自动化。如果网站上选择也被禁用了,参见解除对复制和右键的封锁。
为这篇文章评分
暂无评分 — 成为第一个。