Estoy usando el generador de botones para compartir ShareThis , que representa los botones para compartir en las redes sociales al buscar una clase sharethis-inline-share-buttons . El problema es que necesito mostrar los botones de compartir dentro de un modal SweetAlert2, que se generan dinámicamente y no existen como marcado en la página como la mayoría de las soluciones modales. Esto significa que cualquier sharethis-inline-share-buttons que intento colocar dentro de un modal SweetAlert2 no existe en el momento en que el complemento ShareThis la busca.
Si bien proporciona un complemento decente, la experiencia de inicio de sesión en el sitio ShareThis es terrible, y SweetAlert 2 no parece ofrecer nada en su API para conectar un script antes de que se haya generado el modal.
Aquí está el código que estoy usando actualmente para activar SweetAlert2:
shareText = `Share this website: <br> <div class="share-container"> <div class="sharethis-inline-share-buttons"></div> </div>`; modal.fire({ titleText: "Spread the word", html: shareText, icon: "info", backdrop: `rgba(0,0,0,0.7)` });¿Es posible lo que quiero?
Decidí ponerme en contacto con el soporte de ShareThis para ver si era posible cargar sus botones Compartir solo una vez que se había cargado SweetAlert 2. Descubrí una solución que funcionaba en su mayoría antes de recibir su respuesta, pero podría haber esperado un día más o menos para que respondieran porque no solo solucionaron el problema con una sola línea de código, sino que también se tomaron el tiempo para investigar SweetAlert. 2 para determinar cómo se debe implementar (agradecimiento a Enrique en el equipo de ShareThis).
La solución es utilizar las funciones didOpen o didRender de SweetAlert 2, que permiten la ejecución de una función después de que el modal se haya representado de forma sincrónica o asincrónica, respectivamente. A partir de ahí, es una simple cuestión de inicializar manualmente los botones Compartir.
modal.fire({ titleText: "Spread the word", html: shareText, icon: "info", backdrop: `rgba(0,0,0,0.7)`, didOpen: function () { window.__sharethis__.initialize(); } });