Si eres programador y trabajas por cuenta ajena, probablemente alguna vez te haya tocado implantar una solución o funcionalidad en contra de lo que consideras básicos principios del sentido común. Después de todo, el cliente paga para que se haga lo que dice, independientemente de estándares, usabilidad o costes inútiles.
Hace poco me pidieron que dotara a una aplicación web de una funcionalidad curiosa. Un buscador para encontrar palabras dentro del texto de la página. De la página que se está visualizando, o sea lo mismo que el Ctrl+F de toda la vida. El desarrollo era para una aplicación para ser desplegada únicamente en una intranet y accesible únicamente con Internet Explorer 9, así que la solución que se adoptó, con la ayuda de un poco de jQuery, fue la siguiente:
Y listos.
Pero luego, mira tú por dónde, se decidió que la aplicación había de ser publicada en las interwebs. Y compatible con los navegadores principales, desde Opera en adelante. Y, claro, el objeto ActiveX no está muy bien visto fuera del reino IE. Hay que reconocer que otros navegadores admiten lanzar el buscador de texto en página por javascript:
En Firefox y en algunos otros de la familia gecko window.find() abre la ventanita del buscador de texto en la página. No así en Chrome y otros navegadores de la rama webkit. Estos últimos sí que admiten el método object.find(), pero hay que pasarle un argumento (el texto a buscar) y, en cualquier caso, no abren el solicitado buscador de texto. Opera, por su lado, ni siquiera se da por enterado.
Ante la imposibilidad de conseguir una solución homogénea, se decidió presentar una solución por javascript, compatible con la inmensa mayoría de navegadores, para ello qué mejor que desarrollar un plugin para jQuery.
Es más lento que qualquier buscador interno del navegador, más inestable y posiblemente impreciso, pero el cliente tiene su botoncito. Un poco por desahogo, decidí hacer en una tarde una paginilla para «promover el plugin». Si a pesar de lo que he dicho, alguien quiere echarle un vistazo, no tiene más que pinchar en la imagen. Quedais avisados.
Escenario Esta mañana ha ocurrido algo inexplicable, por lo menos, como suele pasar en este dominio, hasta que hemos dado con la solución; luego parecía obvio. Nos avisan que una de las máquinas de nuestra red negaba el acceso por SSH provocando el siguiente error:
Escenario Por un lado una aplicación que permite al usuario personalizar el idioma del sitio. Por otro, una gráfica de tipo línea temporal generada con la biblioteca Chart.js, integrada en un módulo de React con react-chartjs-2. Problema Según un comentario de un usuario de Stackoverflow, basta con un
require('moment/min/moment-with-locales'); y establecer el valor de la…
Escenario Un usuario se conecta con el móvil a su aplicación de empresa. Si es la primera vez que lo hace ésta le pide autorización para recabar su localización. La aplicación manda la localización al servidor y desde el servidor se informa a una página de monitorización. Dicha página está conectada por websocket con el…
Escenario Con el fin de dibujar una gráfica cronológica, necesito generar en javascript una matriz de fechas a partir de una de inicio y otra de fin. En stackoverflow doy con una solución que considero sencilla e inteligible:
Igual no sabes que es Open Graph, pero seguro que lo has visto en acción cuando, al compartir un enlace de una web por un chat, por arte de magia aparece una imagen representativa de la página compartida. En cualquier caso, si no has oído hablar de OG, lo más seguro es que no te…
Escenario Ésta es rápida y muy específica, pero nada evidente. Me ha llevado un poco de tiempo dar con el problema. Si no utilizas apexcharts posiblemente no te vaya a interesar esta entrada. Es una biblioteca de JavaScript para dibujar gráficos a partir de datos. Problema Apexcharts ofrece la posibilidad de exportar a PNG desde…