Aloha, developah! 🙂
Aquí te dejo un bookmarklet que he creado para que cuando quieras seleccionar a tus amigos en Facebook para invitarles a que hagan Me gusta en una página, este script lo haga de manera automática y no tengas que ir haciendo clic uno por uno.
Un bookmarklet es un marcador que, en lugar de apuntar a una dirección URL, hace referencia a una pequeña porción de código JavaScript para ejecutar ciertas tareas automáticamente.
Cómo Añadir el Bookmarklet a Marcadores
Si no has utilizado nunca uno, sólo has de arrastrar el enlace que hay a continuación a la barra de marcadores de tu navegador y se guardará como si hubieses añadido una página a favoritos.
Ahora solo has de hacer clic en el marcador cuando estés en una página de Facebook y quieras seleccionar a tus amigos para invitarles a que le den a Me gusta.

Código en el Bookmarklet
Como suele decirse: Show me the code :D. Para poder manipular el DOM, verás que he echado mano a textos que están en español. Es lo malo que tiene React y las clases autogeneradas y lo de no tener atributos id :\ Si necesitas usarlo en otros idiomas deberás cambiarlos antes de poder usarlo. Son los siguientes:
- Línea 1: Invita a tus amigos a indicar que les gusta
- Línea 4: No invitados
Por otro lado, el temporizador está puesto a 2 segundos para que haga scroll de manera más pausada, ya que haciendo pruebas, Facebook me acabó bloqueando temporalmente ya que decía que me desplazaba muy rápido 😀
Código Minificado
El código que hay en el bookmarklet es el siguiente, está minificado y es una función autoejecutable con la declaración de javascript: delante:
javascript:( function () {let getRawData=document.querySelector('[aria-label^="Invita a tus amigos a indicar que les gusta"]'),getFriendsList=getRawData.childNodes[2].children[4].childNodes[0].childNodes[0],rowHeight=getFriendsList.firstChild.scrollHeight,getTotalFriends=parseInt(getElementsByTextIncluded("span","No invitados ")[0].innerHTML.split("(")[1]),totalHeight=rowHeight*getTotalFriends;function getElementsByTextIncluded(e,t){let i=document.querySelectorAll(e);return Array.prototype.filter.call(i,e=>RegExp(t).test(e.textContent))}function scrollToBottom(){getFriendsList.scrollIntoView({block:"end",behavior:"smooth"})}function selectAllFriends(){getFriendsList.childNodes.forEach(e=>{e.firstChild.click()})}function getAllFriends(){scrollToBottom(),console.log(getFriendsList.scrollHeight),setTimeout(validateHeight,2e3)}function validateHeight(){getFriendsList.scrollHeight<=totalHeight/2?setTimeout(getAllFriends,2e3):(scrollToBottom(),setTimeout(selectAllFriends,2e3))}validateHeight();})();
Código sin Minificar
let getRawData = document.querySelector('[aria-label^="Invita a tus amigos a indicar que les gusta"]');
let getFriendsList = getRawData.childNodes[2].children[4].childNodes[0].childNodes[0];
let rowHeight = getFriendsList.firstChild.scrollHeight;
let getTotalFriends = parseInt(getElementsByTextIncluded('span', 'No invitados ')[0].innerHTML.split("(")[1]);
let totalHeight = rowHeight * getTotalFriends;
function getElementsByTextIncluded (selector, text) {
let elements = document.querySelectorAll(selector);
return Array.prototype.filter.call(elements, (element) => {
return RegExp(text).test(element.textContent);
});
};
function scrollToBottom () {
getFriendsList.scrollIntoView({ block: "end", behavior: "smooth" });
};
function selectAllFriends () {
getFriendsList.childNodes.forEach(item => {
item.firstChild.click();
});
};
function getAllFriends() {
scrollToBottom();
console.log(getFriendsList.scrollHeight);
setTimeout(validateHeight, 2000);
};
function validateHeight () {
let actualHeight = getFriendsList.scrollHeight;
if (actualHeight <= (totalHeight / 2)) {
setTimeout(getAllFriends, 2000);
} else {
scrollToBottom();
setTimeout(selectAllFriends, 2000);
};
};
validateHeight();
Yo lo he estado probando y la verdad que va bastante bien. Ahora, seleccionar a tus amigos en Facebook es mucho más cómodo. 😉
Si lo pruebas, ya me dices qué tal y si tienes algún problema, házmelo saber e intentaré solucionarlo. Si prefieres hacerlo tú, tienes el enlace al repo de GitHub aquí debajo.