滚动到Facebook消息的顶部

nil*_*cit 4 javascript scroll facebook

是否有一些我可以执行的JavaScript代码滚动到Facebook上消息框的顶部?因此,当您单击"查看全部"并转到主消息页面时,如果向上滚动则会加载更多消息.我想强制它继续向上滚动以继续加载消息.我试过了

document.body.scrollTop = document.documentElement.scrollTop = 0;

但那当然只滚动到实际页面的顶部.有关如何滚动消息框的任何想法?

小智 5

选择一个对话并尝试此脚本(通过控制台加载):

var autoLoad = {

    messagesContainer: document.querySelector('#contentArea [role=main] .uiScrollableAreaContent'),

    start: function (speed) {
        var messagesContainer = this.messagesContainer,
            loadMore = document.querySelector('[role=log] .pam.uiBoxLightblue.uiMorePagerPrimary');
        speed = parseInt(speed, 10) || 1000;
        clearInterval(this.interval);
        this.interval = setInterval(function () {
            messagesContainer.style.top = '0px';
            loadMore.click();
        }, speed);
    },

    stop: function () {
        clearInterval(this.interval);
        this.messagesContainer.style.top = '';
    }

};
Run Code Online (Sandbox Code Playgroud)

要启动它,请键入:

// Takes a 'speed' parameter, defaults to 1000 milliseconds
autoLoad.start(1200);
Run Code Online (Sandbox Code Playgroud)

并停止它(滚动条重新出现的必要条件):

autoLoad.stop();
Run Code Online (Sandbox Code Playgroud)

说明:

在探索Facebook的DOM之后,我发现了一些专门针对此工作所需元素的选择器:

  • 消息容器,用于保存消息
  • "加载更多"链接,触发facebook的脚本负责加载更多消息.

消息容器可滚动区域不使用本机滚动,而是使用bottomtop设置它的当前滚动位置.

因此,如果要滚动到顶部,则将容器设置为top: '0',并且由于这种方式,自动加载AJAX的消息仅触发一次,您需要在每次滚动到顶部后手动触发它.我设法通过click在触发AJAX的链接中执行来完成此操作.

我试图获得我能找到的最具体的类/选择器,以及那些听起来更通用的类,因为我不知道Facebook是否以某种方式动态生成id /类.

我在Firefox和Chrome下对此进行了测试,稍微探索一下代码并根据您的需要进行更改.我希望这对你有用,否则,你可以使用DOM资源管理器找到合适的选择器.