Solución para Nuxt Disqus y Tailwind v4 con OKLCH

Recientemente me encontré con un problema al usar Nuxt Disqus y el iframe de Disqus en un proyecto que utiliza TailwindCSS v4. Este problema surge porque Tailwind v4 utiliza colores en formato oklch, lo que rompe el análisis de estilos en JavaScript y genera excepciones.

El Problema

Disqus utiliza getComputedStyle para determinar si debe renderizar la versión clara u oscura del iframe. Sin embargo, con Tailwind v4, los colores en formato oklch no son compatibles con el análisis de estilos de JavaScript, lo que provoca errores.

La Solución

Gracias a la flexibilidad de JavaScript, podemos sobrescribir el método getComputedStyle para manejar los valores oklch y evitar que se generen excepciones. Aquí está el código que utilicé para solucionar el problema:

// Guardar la función original de getComputedStyle
const originalGetComputedStyle = window.getComputedStyle;

// Sobrescribir getComputedStyle
window.getComputedStyle = function (element, pseudoElt) {
  const styles = originalGetComputedStyle(element, pseudoElt);

  // Devolver un proxy para interceptar llamadas a getPropertyValue
  return new Proxy(styles, {
    get(target, prop) {
      if (prop === 'getPropertyValue') {
        return (property) => {
          const value = target.getPropertyValue(property);
          // Reemplazar valores "oklch" o manejarlos según sea necesario
          if (value.includes('oklch')) {
            if (document.documentElement.classList.contains("dark")) {
              return 'black';
            }
            return 'white';
          }
          return value;
        };
      }
      return target[prop];
    },
  });
};

Alternativas

Existen otras soluciones para este problema, como cambiar manualmente los colores de fondo en el iframe de Disqus. Puedes encontrar más información en estos enlaces:

Conclusión

Esta solución me permitió mantener la compatibilidad con Tailwind v4 sin necesidad de modificar los colores de fondo directamente. Espero que esta alternativa sea útil para otros desarrolladores que enfrenten el mismo problema.

Si tienes alguna pregunta o sugerencia, no dudes en dejar un comentario. ¡Espero que esta solución te ayude!

2025-03-25 10:002025-03-25T10:00:00.000ZNuxtDisqusTailwindCSSJavaScriptSoluciones

Copyright © 2025. All rights reserved.

Made with ❤️ by Juanman Béc