Puedes leer más sobre esto aquí.
Swift Selection Search (SSS) es un complemento de Firefox para buscar rápidamente algún texto en una página utilizando sus motores de búsqueda favoritos.
Seleccione el texto en una página y aparecerá un pequeño cuadro emergente con los motores de búsqueda sobre su cursor. ¡Presione uno y buscará automáticamente el texto seleccionado usando ese motor!
SSS es configurable. Puede definir qué motores de búsqueda aparecen en la ventana emergente, la apariencia de los iconos, qué sucede cuando hace clic en ellos, dónde aparece la ventana emergente, ya sea o no ocultarlo cuando la página se desplaza, si desea copiar texto automático en la selección y muchas más opciones.
También obtiene un menú contextual opcional para buscar en cualquiera de sus motores. Puede deshabilitar este menú adicional en las opciones si lo desea. También tiene la opción de deshabilitar la ventana emergente y dejar solo este menú contextual. Tu elección. :)
SSS está disponible en el sitio web de Mozilla Add-on, aquí:
https://addons.mozilla.org/firefox/addon/swift-selection-search
En primer lugar, dado que WeBextensions se realiza en JavaScript, necesitamos poder convertir TypeScript a JavaScript, preferiblemente de una manera que sea lo más automática posible.
Instalar npm . Descargue Node.js de https://nodejs.org y obtendrá NPM junto a él.
En la carpeta del proyecto, ejecute esto en la línea de comando:
instalación de NPM
Esto instalará las dependencias TypeScript del proyecto localmente en la carpeta Node_Modules .
Para transpionar todos los scripts .ts a .js (en Windows):
"node_modules/.bin/tsc.cmd" - -watch -p tsconfig.json
El comando permanecerá vivo y volverá a transmitir automáticamente el código después de cualquier cambio a archivos .ts, lo cual es útil mientras se desarrolla.
Ahora tiene archivos .js, por lo que puede usar SSS como WeBextension. ¡Hurra!
Para un breve desarrollo o simplemente curiosidad, la forma más simple de probar SSS es el Acerca de: Página de depuración#Addons en Firefox. Presione el botón "Cargar complemento temporal", seleccione un archivo en el directorio "SRC" de búsqueda de selección Swift (por ejemplo, manifest.json ), y cargará el complemento hasta que el navegador esté cerrado. Los cambios en la mayoría del código requieren volver a cargar el complemento nuevamente.
Para un desarrollo y/o envasado más prolongados, como la recarga automática después de cada cambio, siga las instrucciones de Mozilla aquí para instalar y usar la herramienta Web-EXT .
Bifurca el repositorio en GitHub y clona a su computadora.
Siga las instrucciones anteriores sobre cómo construir .
Al final, debe tener un script que transmita automáticamente el código de TypeScript a JavaScript, y debe saber cómo ejecutar su versión de SSS en Firefox.
Aprenda que SSS tiene 3 ramas principales:
Lea las pautas del código a continuación.
Encuentre un problema que le gustaría resolver en la lista de problemas.
Pregunte si alguien ya está trabajando en ello. Además, si faltan detalles sobre cómo implementarse o si desea conocer posibles enfoques, ¡no dude en preguntar!
Cree una nueva rama GIT para la nueva función o corrección de errores que está intentando implementar. Cree esta rama de "Desarrollar", para simplificar la fusión más adelante (ya que "Master" puede no tener todos los cambios actuales).
Implementar y confirmar/empujar los cambios a la rama, posiblemente en múltiples compromisos.
Finalmente, cree una solicitud de extracción para fusionar sus cambios en el repositorio original. Estará sujeto a revisión de código, discusión y posiblemente cambios si es necesario.
¡Gracias!
SSS se portó en algún momento de JavaScript a TypeScript para obtener los beneficios de las anotaciones de tipo, ya que el verificador de tipo puede capturar muchos errores. Sin embargo, debe tenerse en cuenta que la interacción de WeBextensions con TypeScript es quisquilloso en el mejor de los casos, ya que TypeScript supone que los scripts pueden importar código/datos de otros scripts, cuando en realidad el entorno de Webextensions tiene sandboxing y rara vez lo permite.
Los scripts de contenido no ven el código del script de fondo, o viceversa, y la única forma en que múltiples scripts de contenido pueden ver el código de los demás es si todos ellos son inyectados en la misma página por el script de fondo, de manera similar a cómo lo harían si se incluyeron en una página HTML como scripts. TypeScript no tiene idea de que así es como funcionan WeBextensions, por lo que solo porque algo se transfiera a JavaScript correctamente, no significa que la WeBextension funcione.
Un ejemplo que funciona es que podemos declarar tipos/clases en el script de fondo y referirlos en otros scripts, ya que solo el comprobador de tipo se preocupa por ellos. Obtenemos el tipo de verificación y está bien.
Sin embargo, si intentamos agregar a esas clases algunos métodos, asignaciones de variables, etc., entonces los scripts de contenido u opciones de los scripts de página no verán estos. Cuando se trasladen a JavaScript, se dejarán como referencia al código en otro script, que no se puede hacer referencia en tiempo de ejecución debido a Webextensions Sandboxing. Esto también es cierto para los enums (que tienen valores concretos, por lo que "datos") a menos que los declaremos como const enum , en cuyo caso TypeScript copia sus valores a donde se usan en lugar de crear objetos JavaScript.
Entonces, si ve una clase total o parcialmente declarada en más de un script en este proyecto (por ejemplo, tanto en el script de fondo como en el script de página), lo anterior es por qué.
Otra cosa que puede fallar es usar instanceof para verificar si un objeto es de cierta clase. No haga esto para las clases creadas a medida, ya que puede fallar debido al sandboxing.