Tengo una página web con una serie de enlaces. Instalé el script Greasemonkey para hacer clic en cada uno con un retraso, pero Firefox se bloquea después de solo unos pocos, aunque he desactivado la opción "Bloquear ventanas emergentes".
Y en realidad no son ventanas emergentes, sino solo pestañas, es decir, páginas completas.
el guion de Greasemonkey es
// ==UserScript== // @name AlbunackSubmitArtistLinksOnPage // @version 1 // @grant none // @include http://reports.albunack.net/mbartist_discogsartist_report2*.html // ==/UserScript== function delayedOpenLink(link) { link.click(); } function check() { var links = document.getElementsByName("link"); var i=1; for(link of links) { setTimeout(delayedOpenLink, 5000 * i, link); i++; } } setTimeout(check, 5000);Esto es frustrante porque es mi página web y retrasa cada vez que se abre una pestaña y he deshabilitado el bloqueo de ventanas emergentes. Entonces, ¿por qué Firefox sigue bloqueando mis pestañas?
Además, recibo un mensaje que dice que Firefox evitó que se abrieran x ventanas emergentes, pero si hace clic en él, solo hay una opción para abrirlas una por una, bloquear ventanas emergentes o administrar ventanas emergentes (pero ya están desbloqueadas), pero no hay opción para permitir ventanas emergentes.
El aumento de la demora de 5 segundos (5000) a 20 segundos (20000) permitió que pasaran algunos más, pero no muchos más.
El problema parece ser la cantidad de pestañas abiertas en lugar de la cantidad de enlaces abiertos. Con esto quiero decir que si cambio el enlace para reutilizar la misma pestaña con target="secondpage" en lugar de abrir una nueva pestaña con target="_blank" , entonces Firefox no se queja.
Solo puedo hacer esto porque cuando abro el enlace, se activa un script de Greasemonkey y envía la página en la pestaña, por lo que ya no necesito la página. Pero tengo que asegurarme de que haya suficiente tiempo entre la apertura de cada enlace para que el script de Greasemonkey se complete antes de que se abra el siguiente enlace.
¿Qué GM_openInTab ?
// ==UserScript== // @name AlbunackSubmitArtistLinksOnPage // @version 1 // @grant GM_openInTab // @include http://reports.albunack.net/mbartist_discogsartist_report2*.html // ==/UserScript== const delay = seconds => new Promise(resolve => setTimeout(resolve, seconds * 1e3)); async function check() { const links = document.getElementsByName("link"); for (const link of links) { await delay(5); GM_openInTab(link.href); } } setTimeout(check, 5000); // or check() Esto hará clic en cada enlace de la página cada 5 segundos. También hay algunas otras mejoras en su secuencia de comandos original ( const en lugar de var , async / await ).