Javascript scrollage groupe Facebook

Bonjour, j’avais un script pour scroller des pages, qui marchaient aussi sur Facebook… Mais il ne fonctionne plus à présent : la raison est simple, pour scroller, on doit appuyer sur le bouton “afficher plus”, fonctione manquante dans le javascript il semblerait… (voir image ci-dessous)

Le javascript en question :
javascript:a = setInterval(function () { window.scrollTo(0,document.body.scrollHeight); }, 1000)

Est ce que quelqu’un pourrait m’ajouter la fonction “afficher plus” pour qu’il marche sur Facebook svp ?

Mille mercis !

1 J'aime

Pour ma part j’ai encore l’interface avec l’infinite scroll, je n’ai pas de bouton “Afficher la suite”, certainement que FB est en train de faire de l’AB testing…

Pourrais-tu nous faire un clic-droit, puis “Inspecter élément” sur ce fameux bouton “Afficher la suite” afin d’en afficher le code source HTML correspondant ? Puis faire une capture d’écran du tout, un peu comme ceci:

Rah les salauds ! J’peux te copier coller le code entier si tu en a besoin :slight_smile:

Merci !

Tu peux tenter le coup en remplaçant le contenu du corps de la callback passée à setInterval par:

document.querySelector("div.morePager>div>a.uiMorePagerPrimary").click()

De telle sorte que:

setInterval(function () { document.querySelector("div.morePager>div>a.uiMorePagerPrimary").click(); }, 2500)

Attention toutefois la technique n’est pas infaillible:

  • Lorsqu’on click sur le bouton “Afficher la suite”, il disparait un temps, faisant normalement apparaitre un petit “loader” qui tourne, pendant que les nouvelles données sont chargées
  • Si ce temps de chargement est plus long que le temps spécifié dans le setInterval (dans mon exemple 2.5 sec), le bouton n’existera pas au moment où le script cherche à cliquer dessus, le script pourrait planter à ce moment là

Du coup, petite sécurité:

    setInterval( () => { 
       const button = document.querySelector("div.morePager>div>a.uiMorePagerPrimary");
       if(button) button.click();
    }, 2500)

Idéalement, il faudrait implémenter des Promises, avec un MutationObserver, pour savoir quand le loader disparaît et quand le bouton “Afficher la suite” réapparaît, pour seulement à partir de ce moment là pouvoir re-cliquer dessus.

Je te remercie d’avoir pris le temps pour m’aider, malheureusement lorsque j’installe ton script il clique sur les “membres avec des choses en commun” je sais pas trop pourquoi mais en tout cas ça ne fonctionne pas :confused:

Peut être qu’il y a d’autres éléments HTML qui possèdent le même attribut class=uiMorePagerPrimary, et par conséquent le sélecteur CSS n’est pas assez restrictif et ciblé.

Malheureusement je n’ai pas accès à ta version de l’interface…

Sinon, retente le coup avec le code que j’ai re-mis à jour, avec un sélecteur CSS plus précis: div.morePager>div>a.uiMorePagerPrimary

C’est exactement le même code que le précédent que tu m’as donné non? (Si je remplace celui entre parenthèse par celui là ça ne change rien)

Que te faudrait il pour t’aider ?

Ce n’est pas le même sélecteur CSS, j’ai remplacé l’ancien sélecteur a.uiMorePagerPrimary par le nouveau div.morePager>div>a.uiMorePagerPrimary

Mais à ce stade je vois mal pourquoi le bouton “membre avec des choses en commun” aurait été qualifié avec une classe “uiMorePager”, ca n’a pas vraiment de sens…

En tout état de cause, les sélecteurs CSS ne sont pas assez puissants comme d’hab…

Passons aux choses sérieuses avec du XPath. Essayes ce nouveau code (testé et fonctionne dans la console de Google Chrome) :

    setInterval( () => { 
       const buttons = $x("//a[.='Afficher la suite']");
       if(Array.isArray(buttons)) buttons[0].click();
    }, 2500)

Bon, peut être que ça vient de moi… Car là ça me met carrément un message d’erreur.
Le javascript je l’ai ajouté dans mon chrome comme si j’ajoutais une page, ça marchait mais là plus du tout.


C’est bien ici qu’on ajoute les scripts non ?

Il rajoute des %20 entre chaque trucs c’est pour ça. J’suis vraiment 0 ah ah

Heu, mais pourquoi tu rentres le code JavaScript dans tes paramètres de dossiers favoris ? :joy: :face_with_head_bandage::sob:

Il y a une petite erreur, tu peux exécuter le code JavaScript au sein de la console de Chrome:

1 J'aime

Parce que c’est plus simple pour moi ah ah merci !

@Fitis86000 tu coups tu fait koi avec ce script ? partage :slight_smile:

Aaah tu m’as tué, c’est méchant de ma part de me moquer mais… excellent le coup du JS dans les favoris :slight_smile:

Dis moi si tu t’en sors avec le JS dans la console, j’espère que ça va marcher pour ton auto scroll… !