Algo que me esta pasando es que cuando recargamos la página estando en un blog blog/[slug], no se muestra el disqus porque el evento del documento readyState queda en “interactive” en el momento de la ejecución del Mount de Svelte. Y como esta verificación se hace solo una vez, no se vuelve a verificar cuando el documento este en “complete”
.
Para eso, yo hice lo siguiente:
const disqus = () => {
let d = document, s = d.createElement('script');
s.src = 'https://dartilesdev.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
}
onMount(async () => {
// Verificamos que el readyState del documento sea "complete", de no ser así nos suscribimos a un evento que nos permite saber cuando este sea "complete", una vez nos aseguremos de eso ejecutamos el disqus() para mostrar nuestro sistema de comentarios.
document.readyState === 'complete' ? await disqus() :
document.addEventListener('readystatechange', async () => document.readyState === 'complete' && await disqus())
})
No se, si es la mejor forma de hacer esto, porque también estoy aprendiendo svelte. Yo generalmente acostumbro a usar todo lo que nos ofrezca un framework/librería, pero no encontré forma de hacer esta verificación 100% con las herramientas de svelte si alguno sabe sería genial. 🤗
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?