Un bookmarklet es un marcador almacenado en un navegador web que contiene comandos JavaScript que añaden nuevas funciones al navegador. Se almacenan como la URL de un marcador en un navegador web o como un hipervínculo en una página web . Los bookmarklets suelen ser pequeños fragmentos de JavaScript que se ejecutan cuando el usuario hace clic en ellos. Al hacer clic en ellos, los bookmarklets pueden realizar una amplia variedad de operaciones, como ejecutar una consulta de búsqueda a partir del texto seleccionado o extraer datos de una tabla.
Otro nombre para bookmarklet es favelet o favlet , derivado de favoritos (sinónimo de marcador). [1]
Steve Kangas de bookmarklets.com acuñó la palabra bookmarklet [2] cuando comenzó a crear scripts cortos basados en una sugerencia de la guía de JavaScript de Netscape . [3] Antes de eso, Tantek Çelik llamó a estos scripts favelets y utilizó esa palabra ya el 6 de septiembre de 2001 (correo electrónico personal [ aclaración necesaria ] ). Brendan Eich , quien desarrolló JavaScript en Netscape, dio esta explicación del origen de los bookmarklets:
En este sentido, fueron una característica deliberada: inventé la
javascript:
URL junto con JavaScript en 1995 y pretendí quejavascript:
las URL pudieran usarse como cualquier otro tipo de URL, incluso como marcadores. En particular, hice posible generar un nuevo documento cargando, por ejemplo,javascript:'hello, world'
, pero también (clave para los marcadores) ejecutar un script arbitrario contra el DOM del documento actual, por ejemplojavascript:alert(document.links[0].href)
. La diferencia es que el último tipo de URL usa una expresión que evalúa el tipo indefinido en JS. Agregué el operador void a JS antes de que se lanzara Netscape 2 para que fuera fácil descartar cualquier valor no indefinido en unajavascript:
URL.— Brendan Eich, en un correo electrónico a Simon Willison [4]
La mayor implementación de la Política de Seguridad de Contenido (CSP) en sitios web ha causado problemas con la ejecución y el uso de bookmarklets (2013-2015), [5] y algunos sugieren que esto anuncia el fin o la muerte de los bookmarklets. [6] [7] William Donnelly creó una solución alternativa para este problema (en el caso específico de cargar, hacer referencia y usar el código de la biblioteca JavaScript) a principios de 2015 usando un userscript de Greasemonkey ( extensión complementaria del navegador Firefox / Pale Moon ) y un protocolo de comunicación bookmarklet-userscript simple . [8] Permite que los bookmarklets (basados en la biblioteca) se ejecuten en todos y cada uno de los sitios web, incluidos aquellos que usan CSP y tienen un esquema de URI https://. Sin embargo, tenga en cuenta que si/cuando los navegadores admitan la desactivación/no permitir la ejecución de scripts en línea usando CSP, y si/cuando los sitios web comiencen a implementar esa función, "romperá" esta "solución".
Los navegadores web utilizan URI para el href
atributo de la etiqueta y para los marcadores. El esquema de URI, como o , y que generalmente especifica el protocolo , determina el formato del resto de la cadena. Los navegadores también implementan URI que para un analizador son como cualquier otro URI. El navegador reconoce el esquema especificado y trata el resto de la cadena como un programa JavaScript que luego se ejecuta. El resultado de la expresión, si lo hay, se trata como el código fuente HTML para una nueva página que se muestra en lugar de la original.<a>
http
ftp
javascript:
javascript
El script que se está ejecutando tiene acceso a la página actual, que puede inspeccionar y modificar. Si el script devuelve un tipo indefinido (en lugar de, por ejemplo, una cadena), el navegador no cargará una nueva página, con el resultado de que el script simplemente se ejecuta sobre el contenido de la página actual. Esto permite realizar cambios como cambios de color y tamaño de fuente en el lugar sin tener que recargar la página.
Una función invocada inmediatamente que no devuelve ningún valor o una expresión precedida por el void
operador impedirá que el navegador intente analizar el resultado de la evaluación como un fragmento de marcado HTML:
javascript : ( función (){ //Declaraciones que devuelven un tipo no indefinido, por ejemplo, asignaciones})();
Los bookmarklets se guardan y se utilizan como marcadores normales. Por lo tanto, son herramientas sencillas que se pueden usar con un solo clic y que añaden funcionalidad al navegador. Por ejemplo, pueden:
"Instalar" un bookmarklet le permite acceder y ejecutar rápidamente programas JavaScript con un solo clic desde la barra de marcadores de su navegador. Siga estos pasos detallados para instalar un bookmarklet:
Ctrl+Shift+O
o seleccionando "Marcadores" en el menú del navegador y luego eligiendo "Administrador de marcadores".javascript:
seguido del fragmento de código.Para utilizar el bookmarklet, simplemente haga clic en su icono o nombre en la barra de marcadores. El código JavaScript se ejecutará inmediatamente en la página web que esté visualizando. Asegúrese de que la página web esté completamente cargada antes de utilizar el bookmarklet para obtener un rendimiento óptimo.
Este bookmarklet de ejemplo realiza una búsqueda en Wikipedia sobre cualquier texto resaltado en la ventana del navegador web. En un uso normal, el siguiente código JavaScript se instalaría en un marcador en la barra de herramientas de marcadores de un navegador [13] . A partir de ese momento, después de seleccionar cualquier texto, al hacer clic en el bookmarklet se realiza la búsqueda.
javascript : ( función () { función se ( d ) { devolver d .selección ? d .selección .createRange ( ) . text : d .getSelection ( ) } var s = se ( documento ); para ( var i = 0 ; i < frames.length && ( s == null || s == '' ) ; i ++ ) s = se ( frames [ i ] .documento ) ; if ( ! s || s == '' ) s = prompt ( 'Ingrese%20términos%20de%20búsqueda%20para%20Wikipedia' , '' ); abierto ( 'https://en.wikipedia.org' + ( s ? '/w/index.php?title=Special:Search&search=' + encodeURIComponent ( s ) : '' )). foco (); })();
Los marcadores pueden modificar la ubicación , por ejemplo, para guardar una página web en Wayback Machine .
javascript : ubicación . href = 'https://web.archive.org/save/' + documento . ubicación . href ;
Abra una nueva ventana o pestaña del navegador web , por ejemplo, para mostrar la fuente de un recurso web si el navegador web admite el esquema URI de vista de fuente .
javascript : void ( ventana . open ( 'view-source:' + ubicación ));
Mostrar información relacionada con la URL actual , por ejemplo,
javascript : alert ( '\tdocumento.URL\n' + documento.URL + '\n\ tdocumento.lastModified \n' + documento.lastModified + '\n\tubicación\ n ' + ubicación ) ;
{{cite web}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )