Los Bookmarkets se pueden definir como mini aplicaciones enmascaradas como pequeños fragmentos de la genialidad de JavaScript que residen en su navegador y proporcionan funcionalidades adicionales a una página web.
Hoy, analizaremos la creación de marcadores de libros desde cero y en el camino, algunas de las mejores prácticas a seguir..
No son para los nerds, de hecho, son bastante centrados en el usuario.
Siempre estamos buscando formas de mejorar nuestra experiencia de navegación, ya sea generalizada o poco conocida. Bookmarklets, solía pensar, pertenecía a este último, el bastión de los super nerds. Para mi disgusto, descubrí que estaba completamente equivocado sobre el tema. No son para los nerds, de hecho, están bastante centrados en el usuario, implementan muchas funcionalidades bastante ingeniosas y, tal como lo predijo la gente, se han convertido en una parte fundamental de la forma en que interactúo con el navegador, y Internet.
Hoy, me gustaría guiarlo a través del desarrollo de marcadores de libros implementando algunos marcadores ingeniosos. Sí, marcadores. Estaremos construyendo más de uno, aunque sean muy pequeños. Intrigado? Empecemos!
Para citar mi artículo intro:
Los Bookmarkets se pueden definir como mini aplicaciones que se enmascaran como pequeños fragmentos de la genialidad de JavaScript que residen en su navegador y proporcionan funcionalidades adicionales, con solo un clic.
La palabra en sí es una mezcla, maleta Para el pedante, de las palabras bookmark y applet. También llamados favelets, estos pequeños fragmentos de JavaScript le permiten evocar una funcionalidad adicional para cualquier página que visite.
Debido a que solo están compuestas de JavaScript, son bastante portátiles: están soportadas por todos los navegadores en todas las plataformas, incluso en móviles y tabletas. Instalarlos es tan simple como arrastrarlos a su barra de herramientas.!
El punto es que los marcadores le permiten hacer muchas cosas que de otra manera están demasiado centradas en el desarrollador para lograrlas. Cada funcionalidad que obtiene con un bookmarklet se puede duplicar usando la consola de un navegador y un poco de tiempo. Bookmarklets simplemente simplifica el proceso, empaquetando el código que implementa alguna funcionalidad dentro de un pequeño botón..
Bookmarklets se puede clasificar en varias categorías:
El primer punto que deberá recordar es prefijar todo el código JavaScript con el javascript
URI. Los navegadores han implementado este prefijo específico para que el contenido seguido por él pueda tratarse y analizarse como el código JavaScript adecuado..
Por ejemplo, al hacer clic en este enlace - ver su código a continuación - alertará un texto.
Linky
Recuerde que su código se ejecutará contra la página actualmente cargada, una página que probablemente tendrá JavaScript propio y todas las colisiones resultantes que implica. Lo último que necesita es que su bookmarklet rompa la página actual.
Envolver su código cuidadosamente dentro de una función anónima se asegurará de que no haya colisiones de nombres. Además, los noobs de JavaScript serán desconcertados y pensarán que eres un dios, si te gusta ese tipo de cosas.
javascript: (function () // su código aquí) ();
Esto es pertinente cuando también usas JavaScript en otros lugares. Siempre, siempre aislar su código.
Un bookmarklet no tiene que ser necesariamente pequeño, eres libre de ir tan grande como quieras. En esos casos, en aras de la distribución y de mantener actualizado su código sin la intervención manual del usuario, es mejor crear un contenedor que ingrese el código según sea necesario..
javascript: (function () var jsCode = document.createElement ('script'); jsCode.setAttribute ('src', 'http: //path/to/external/file.js'); document.body.appendChild ( jsCode); ());
Eso es más o menos lo que hace el código anterior: crea un elemento de secuencia de comandos, establece el origen en un archivo alojado en otro lugar y, finalmente, lo agrega al documento. De esta manera, siempre que una parte de su código cambie, puede implementar sus cambios en una sola fuente y hacer que se propague instantáneamente a cada usuario..
Nota: No estás limitado a hacer esto solo por JavaScript. Si su bookmarklet utiliza un extremo frontal, también puede utilizar HTML y CSS de forma externa, lo que hace que su bookmarklet se actualice automáticamente..
Una vez más, si está creando un gigante de un marcador, es posible que necesite una de esas bibliotecas de JavaScript. Pero usarlos en su página no es tan simple como simplemente incluirlo, tendrá que asegurarse de que las bibliotecas no estén disponibles. Las bibliotecas como jQuery y MooTools dominan el mercado y harías bien en asegurarte de que no esté cargado..
Otro problema es que la página puede haber cargado otra biblioteca, lo que puede dar lugar a conflictos sobre el control del símbolo $. Las colisiones de versiones también pueden entrar en juego en algún momento, así que tenlo en cuenta también..
Aquí hay una cáscara rápida para el código que generalmente uso. Recuerde, en su código de producción, deberá tener en cuenta los problemas que he mencionado anteriormente..
if (! ($ = window.jQuery)) // typeof jQuery == 'undefined' también funciona script = document.createElement ('script'); script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; script.onload = libereethKraken; document.body.appendChild (script); else libera el Kraken (); la función libera el Kraken () // ¡El Kraken ha sido liberado, maestro! // Sí, estoy siendo infantil. Coloque su código aquí
El código debe ser bastante autoexplicativo. Vamos a correr rápidamente de todos modos.
Si desea evitar todo este problema, le recomiendo el excelente generador de marcadores de Ben Alman. Se ocupa de los conflictos de espacio de nombres y versiones de una manera muy limpia. Buen material!
Los Bookmarklets son inútiles si, involuntariamente, rompen una página..
No puedo enfatizar este punto lo suficiente. Los Bookmarklets son inútiles si, involuntariamente, rompen una página. Y preocuparse por JavaScript no es lo único con lo que tiene que lidiar.
Si tiene una interfaz, el HTML y el CSS también entran en juego. No asigne a sus contenedores y clases nombres genéricos: si lo llama 'contenedor', siempre tendrá mi odio eterno..
Una forma fácil es prefijar [o sufijo, no me importa] todo con una cadena específica de bookmarklet. Y al escribir su CSS, sea muy, muy específico. Hacer uso de la cascada es bueno, pero úselo con ultra precisión. Los estilos que se filtran a la página principal son irregulares y no evocan confianza.
Si está creando un bookmarklet más pequeño, uno donde incluir una biblioteca de terceros parece no tener sentido, se encontrará con un demonio siempre presente: la compatibilidad entre navegadores.
Puede parecer bastante obvio, pero esto es algo que mucha gente olvida, muchas veces. Asegúrese de probar en tantos navegadores en tantas plataformas como sea posible.
Otra trampa fácil de caer es un bookmarklet que está destinado a funcionar en todos los sitios que solo funcionan de forma selectiva. Las páginas pueden tener diferentes jerarquías y hacer uso de diferentes metodologías. Algunos sitios pueden adoptar HTML5 y usar los contenedores relacionados, mientras que otros pueden jugar de forma segura y usar divs genéricos. Mientras busca información, asegúrese de dar cuenta de todas las escuelas de desarrollo..
Ahora que hemos analizado algunos puntos a tener en cuenta durante el desarrollo, vamos a crear los tres marcadores que mencioné anteriormente, uno de cada categoría..
Si ya está familiarizado con JavaScript básico, el siguiente código debería ser un juego de niños: ¡son solo unas pocas líneas de código! Los marcadores a continuación han estado conmigo desde hace bastante tiempo y parece que no puedo encontrar dónde los vi originalmente. Si lo hace, déjeme una nota rápida en los comentarios y agregaré los créditos correspondientes..
Comenzaremos con uno muy fácil: enviarlo a un servicio externo, Reddit en nuestro caso.
javascript: location.href = 'http: //www.reddit.com/submit? url =' + encodeURIComponent (location.href) + '& title =' + encodeURIComponent (document.title)
Estas son algunas cosas bastante simples, tomadas directamente del sitio. No hay envoltorio anónimo ni espacio de nombres ya que la funcionalidad es bastante limitada.
Cuando se invoca el bookmarklet, ocurre lo siguiente, en orden lógico:
ubicación.href
y titulo del documento
encodeURIComponent
métodoEste patrón funciona bastante para la mayoría de los propósitos de búsqueda y envío. La única variable aquí sería la URL a la que se envía: cada aplicación adopta un enfoque diferente. Debajo de un minuto de búsqueda debería ver a través de.
Por ejemplo, un bookmarklet de validación se vería así:
javascript: location.href = 'http: //validator.w3.org/check? uri =' + encodeURIComponent (location.href)
Tenga en cuenta que simplemente descartamos el título de la página y cambiamos la estructura de la URL para que apunte al servicio de validación W3.
javascript: void (document.bgColor = prompt ('Color? Hex o nombre servirá. ¿Puedo sugerir pink?', 'pink'))
Esto es tan simple como parece. Para mantener las cosas super simples, opté por no introducir variables y validación. Solo veremos el código del núcleo..
document.bgColor
. Eso es! Si lo se bgColor
está en desuso y sí, sé que debería sentirme sucio, pero esto funcionará bastante bien ya que una prueba rápida en navegadores modernos resultó positiva.
Puedes jugar un poco con estos bastante. Esto es similar a cómo generalmente aplicaría el estilo CSS a los elementos a través de JavaScript. Solo lo estamos aplicando a páginas arbitrarias. Tenga en cuenta que las diferentes páginas tienen diferentes estructuras, por lo que si la página tiene un contenedor de ajuste completo, el efecto puede no tener sentido. En estos casos, es posible que tenga que buscar el contenedor principal y luego aplicarle el estilo..
javascript: function () var c = document.cookie.split (";"); para (var i = 0; i-1? C [i] .substr (0, e): c [i]; document.cookie = n + "=; expira = Thu, 01 de enero de 1970 00:00:00 GMT"; ()
No es realmente tan complicado como parece, las cookies simplemente tienen una sintaxis muy estricta, por lo que tendremos que analizarlo paso a paso. Vayamos a través del código:
do
Ahora se convierte en una matriz que contiene todas las cookies establecidas para el dominio actual..Recuerde, los bookmarklets siguen funcionando bajo la página, por lo que no puede acceder a las cookies de otros dominios. Estás limitado a la página en la que invocas el bookmarklet.
Y hemos terminado. Recuerda, simplemente hemos arañado la superficie de los marcadores. Muchos de ellos son aplicaciones completas dentro de ellos mismos, con un extremo frontal adecuado para arrancar. Dedican mucho tiempo y planificación a construir, como cualquier aplicación no trivial. Esto fue simplemente para poner tu pie en la puerta del desarrollo de bookmarklet. Esperemos que este tutorial te haya resultado interesante y te haya sido útil..
Preguntas? Cosas bonitas que decir? Criticas? Pulsa la sección de comentarios y déjame un comentario. Muchas Gracias Por Leer!