¿Cómo envío varias páginas abiertas a través de una solicitud de publicación desde un solo formulario/botón?
Actualmente tengo una tabla en la que cada fila representa un artista de la canción y una canción y en cada fila hay un botón Desvincular que usa un formulario para enviar una acción de publicación a un servidor que da como resultado que se abra una nueva página en una nueva pestaña, y esto funciona bien
<form target="_blank" action="https://acoustid.org/edit/toggle-track-mbid" method="POST"> <input name="state" value="1" hidden=""> <input name="track_id" value="9509889" hidden=""> <input name="mbid" value="6573f01d-0df5-442d-90c3-a69783c217c3" hidden=""> <input type="submit" value="Unlink"> </form>Lo que quiero poder hacer también es tener un botón Desvincular todo por artista que encuentre todas las filas con el mismo artista que la fila en la que se hizo clic y luego envíe una solicitud de publicación para cada una.
Entonces puedo encontrar las filas bien usando getElementsByName() , mi dificultad es que no entiendo solo enviar varias publicaciones, y cada publicación da como resultado que se abra una nueva página en una nueva pestaña.
Supongo que mi JavaScript para UnlinklllByArtist encontraría las filas requeridas y luego, para cada fila, llamaría a otra función de JavaScript para enviar la publicación, pero ¿cómo hago esta segunda parte?
Puede activar múltiples clics de botón/envíos con un clic de botón, pero mis navegadores inicialmente no permitirán que un sitio web abra varias pestañas. Recibo un mensaje de que las pestañas/ventanas emergentes fueron bloqueadas. Tengo la opción de permitir esta acción.
document.querySelector('button').addEventListener('click', () => { const forms = document.querySelectorAll('form'); forms[0].submit(); forms[1].submit(); }); <form target="_blank" action="https://acoustid.org/edit/toggle-track-mbid" method="POST"> <input name="state" value="1" hidden=""> <input name="track_id" value="9509889" hidden=""> <input name="mbid" value="6573f01d-0df5-442d-90c3-a69783c217c3" hidden=""> <input type="submit" value="Unlink"> </form> <form target="_blank" action="https://acoustid.org/edit/toggle-track-mbid" method="POST"> <input name="state" value="1" hidden=""> <input name="track_id" value="9509889" hidden=""> <input name="mbid" value="6573f01d-0df5-442d-90c3-a69783c217c3" hidden=""> <input type="submit" value="Unlink"> </form> <button> Unlink All </button>Encontré una solución usando GreaseMonkey
Esto encuentra cada formulario y luego lo envía a la misma pestaña a su vez con un retraso entre cada envío
// ==UserScript== // @name AlbunackSubmitBadAcoustidsLinksOnPage // @version 1 // @grant none // @include http://reports.albunack.net/new_acoustid_report10_1.html // ==/UserScript== function delayedOpenLink(form) { form.submit(); } function check() { var forms = document.getElementsByTagName("form"); var i=1; for(form of forms) { setTimeout(delayedOpenLink, 5000 * i, form); i++; } } if (confirm("SubmitAcoustIds") == true) { check(); }