我在使用PhantomJS滚动时触发延迟加载时遇到问题。之前的答案(甚至是已接受的答案)都不适合我。大多数是旧的PhantomJS版本。
其他问题 - 与我的情况几乎相同或类似但没有或没有答案的答案:
所有人都尝试将window.document.body.scrollTop = document.body.scrollHeight
与page.evaluate()
一起使用,或者即使他们尝试使用正确的page.scrollPosition
然后由于某种原因他们使用一些明确收集的硬编码滚动值,或限制他们的滚动显示滚动可用时应在页面上的某些元素。
答案 0 :(得分:7)
PS :在呈现网页之前 - 请使用page.scrollPosition = { top: 0, lefT: 0};
,否则您只会看到呈现页面的底部。
var vWidth = 1080;
var vHeight = 1920;
page.viewportSize = {
width: vWidth ,
height: vHeight
};
//Scroll throu!
var s = 0;
var sBase = page.evaluate(function () { return document.body.scrollHeight; });
page.scrollPosition = {
top: sBase,
left: 0
};
function sc() {
var sBase2 = page.evaluate(function () { return document.body.scrollHeight; });
if (sBase2 != sBase) {
sBase = sBase2;
}
if (s> sBase) {
page.viewportSize = {width: vWidth, height: vHeight};
return;
}
page.scrollPosition = {
top: s,
left: 0
};
page.viewportSize = {width: vWidth, height: s};
s += Math.min(sBase/20,400);
setTimeout(sc, 110);
}
sc();
然后我们用幻像滚动页面到最后。
我们定义滚动功能 - 每隔110 ms以pageHeight / 20或400(值较低)的步长从0滚动到底部(sBase)。 **此功能也可以处理无限滚动 - 如果稍微调整一下。但是我给你的基本用法应该在页面加载太慢时停止; P