FB 預設使用所有留言

FB default set all comment

目前為 2022-08-10 提交的版本,檢視 最新版本

// ==UserScript==
// @name         FB 預設使用所有留言
// @namespace    http://tampermonkey.net/
// @version      2.4
// @description  FB default set all comment
// @description:zh-tw  FB 預設開啟所有留言
// @author       You
// @match        https://www.facebook.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=facebook.com
// @grant        none
// @license      MIT
// ==/UserScript==

//40 50 77 101 can change keyword

(function() {
    'use strict';
    console.log("FB 預設開啟所有留言 開始作業")
    document.body.addEventListener('mousedown', async function () {
        console.log("click")
        let a,b
        let has=false
        let originAll=false
        await new Promise(r => setTimeout(r, 300));
        let timeOut=0;
        let article=[]
        while(!has){
            a = document.querySelectorAll("span:not([fb_doac])")
            let top= window.scrollTop
            for (let i = 0; i < a.length; i++) {
                b=a[i];
                let c=b.closest("div[aria-posinset]")
                if(c==null) continue;
                if(c.getAttribute("fb_doac")=="true"){
                    //console.log("jump")
                    continue;
                }
                if(getInnerDepth(b)>4) continue;
                //this line is show the possible menu text, you can change to your language
                if((b.innerText.indexOf("最舊")==0||b.innerText.indexOf("最相關")==0||b.innerText.indexOf("最新")==0) && b.querySelector("[data-ad-preview]")==null && b.closest("[data-ad-preview]") ==null ){
                    b.click()
                    window.scrollTop=top
                    //b.innerText="-"+b.innerText
                    let topElement=b.closest("div[aria-posinset]")
                    topElement.setAttribute("fb_doac",true);
                    article.push(topElement)
                    has=true
                    //console.log("發現 所有留言的存在")
                }
                if(b.innerText.indexOf("所有留言")==0){
                    has=true
                    originAll=true
                    let topElement=b.closest("div[aria-posinset]")
                    topElement.setAttribute("fb_doac",true);
                    article.push(topElement)
                    break
                }
            }
            await new Promise(r => setTimeout(r, 100));
            timeOut+=100
            if(timeOut>5000) return;
        }
        if(!has) return
        console.log(article)

        timeOut=0
        if(originAll){
            has=false
        }
        while(has){
            a = document.querySelectorAll("span:not([fb_doac])")
            let top= window.scrollTop
            for (let i = 0; i < a.length; i++) {
                b=a[i];
                if(getInnerDepth(b)>1) continue;
                //this line is show the possible menu text's under explain, you can change to your language
                if((b.innerText.indexOf("顯示所有留言,包含可能是垃圾訊息的內容。最相關的留言會顯示在最上方。")!=-1|| b.innerText.indexOf("依時間順序顯示所有留言,包括可能是垃圾訊息的留言。")!=-1) && b.querySelector("[data-ad-preview]")==null && b.closest("[data-ad-preview]") ==null ){
                    //console.log(b)
                    b.click()
                    window.scrollTop=top
                    //b.innerText="-"+b.innerText
                    //console.log("自動按所有留言")
                    has=false
                }
            }
            await new Promise(r => setTimeout(r, 100));
            timeOut+=100
            if(timeOut>5000) return;
        }

        has=false
        while(!has){
            timeOut=0
            let top= window.scrollTop
            for(let i=0;i<article.length;i++){
                let item=article[i]
                let c= item.querySelectorAll("span")
                for(let j=0;j<c.length;j++){
                    b=c[j]
                    if(getInnerDepth(b)>1) continue;
                    if(b.innerText.indexOf("顯示先前的留言")!=-1 || b.innerText.indexOf("檢視另")!=-1 || b.innerText.indexOf("查看")!=-1) {
                        b.click()
                        window.scrollTop=top
                        has=true
                    }
                }
            }

            await new Promise(r => setTimeout(r, 100));
            timeOut+=100
            if(timeOut>5000) return;
        }
        //console.log("完成任務")
    })
    function getInnerDepth(node) {
             if (node.children.length) {
                 var depths = Array.prototype.map.call(node.children, getInnerDepth);
                 return 1 + Math.max.apply(Math, depths);
             } else {
                 return 1;
             }
        }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址