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:
|
if ($.browser.msielength) { var x; function find() { x = new ActiveXObject("WScript.Shell") x.SendKeys("^f"); } $("<input id="buscarEnTexto" title="Buscar" type="image" value="Buscar" src="rutat/imagenbuscar.png" />").css({ position: "absolute", right: 175, top: -65, background: "transparent" }).appendTo("div#contenedor-padre").click(function (e) { e.preventDefault(); find(); return false; }); } |
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.