Hola, no sé mucho de JavaScript y traté de usar ChatGPT para generar un script que permita que los elementos en un campo muestren un bloque emergente con información al ser clickeados. Los elementos están en una tabla, por si esa información es necesaria.
// Obtener el elemento de la tabla
const tableElement = document.querySelector("table");
// Agregar un detector de eventos de clic a la tabla
tableElement.addEventListener("click", function(event) {
// Obtener el elemento en el que se hizo clic
const clickedElement = event.target;
// Solo hacer algo si el elemento clickeado es un td
if (clickedElement.tagName === "TD") {
// Crear el elemento emergente y agregarlo a la página
const popup = document.createElement("div");
popup.classList.add("popup");
popup.innerHTML = "¡Este es el contenido emergente!";
document.body.appendChild(popup);
// Posicionar el emergente junto al elemento clickeado
const rect = clickedElement.getBoundingClientRect();
popup.style.top = `${rect.top + window.scrollY + 10}px`;
popup.style.left = `${rect.left + window.scrollX + 10}px`;
}
});
Creó esto, pero al probarlo no funciona. ¿Alguna ayuda con lo que está mal?
Discourse es una aplicación compleja de JavaScript y lograr algo como esto es probablemente más complicado que con JS directo… probablemente necesitarás más ayuda de la que ChatGPT puede ofrecer, ¡y no estoy seguro de que obtengas ese nivel de soporte gratis aquí!
Dicho esto, antes de que alguien pueda darte consejos aquí, necesitaremos saber más sobre lo que intentas lograr. ¿Dónde se encuentra esta tabla en Discourse? ¿Dentro de una publicación? ¿En otro lugar? ¿Qué información contendría este bloque?
Creo que eso es correcto, pero he estado pensando en esto (sin mirar realmente ningún código), y creo que Discourse Translator hace algo muy similar. Creo que ahí es por dónde empezar, pero “Oye, así que realmente no sé mucho de javascript” probablemente no sea el nivel de habilidad que necesitas para lograrlo.
Supongo que alguien familiarizado con la escritura de plugins necesitará entre 5 y 10 horas (pero quizás 2 para una prueba de concepto).
Está bien, jajaja.
La tabla en Discourse se encuentra “Debajo del encabezado”, en la página principal. Planeo introducir manualmente varios textos enlazados en los cuadros. Avísame si necesitas más información.