이에 대한 자세한 내용은 여기를 참조하십시오.
SSS (Swift Selection Search)는 좋아하는 검색 엔진을 사용하여 페이지에서 일부 텍스트를 빠르게 검색하기위한 Firefox 추가 기능입니다.
페이지에서 텍스트를 선택하면 검색 엔진이있는 작은 팝업 상자가 커서 위에 나타납니다. 하나를 누르면 해당 엔진을 사용하여 선택한 텍스트를 자동으로 검색합니다!
SSS는 구성 가능합니다. 팝업에 나타나는 검색 엔진, 아이콘의 모양, 아이콘의 모양, 클릭 할 때 발생하는 일, 팝업이 나타나는 위치, 페이지가 스크롤 할 때 숨길 것인지 여부, 선택시 텍스트를 자동 복사하려는 경우 팝업을 숨길지 여부 및 더 많은 옵션을 정의 할 수 있습니다.
또한 엔진을 검색 할 수있는 선택적 컨텍스트 메뉴가 제공됩니다. 원하는 경우 옵션 에서이 추가 메뉴를 비활성화 할 수 있습니다. 또한 팝업 자체를 비활성화 하고이 맥락 메뉴 만 남기는 옵션도 있습니다. 당신의 선택. :)
SSS는 Mozilla Add-Nons 웹 사이트에서 다음과 같습니다.
https://addons.mozilla.org/firefox/addon/swift-selection-search
첫째, webextensions는 JavaScript로 작성되므로 TypeScript를 JavaScript로 변환 할 수 있어야합니다.
NPM을 설치하십시오. https://nodejs.org에서 node.js를 다운로드하면 그와 함께 NPM을 얻을 수 있습니다.
프로젝트 폴더에서 명령 줄에서 이것을 실행하십시오.
NPM 설치
이렇게하면 프로젝트의 TypeScript 종속성이 폴더 Node_Modules 에 로컬로 설치됩니다.
모든 .ts 스크립트를 .js (Windows에서)로 전환하려면 :
"node_modules/.bin/tsc.cmd" -watch -p tsconfig.json
이 명령은 .ts 파일을 변경 한 후에도 살아 있고 자동으로 코드를 다시 전송합니다. 이는 개발 중에 유용합니다.
이제 .js 파일이 있으므로 SSS를 webextension으로 사용할 수 있습니다. 예!
짧은 개발 또는 호기심의 경우 SSS를 시도하는 간단한 방법은 다음과 같습니다. Firefox의 디버깅#Addons 페이지. "임시 부가 부하"버튼을 누르고 Swift 선택 검색 "SRC"디렉토리 (예 : Manifest.json )에서 파일을 선택하면 브라우저가 닫힐 때까지 애드온을로드합니다. 대부분의 코드를 변경하려면 애드온을 다시로드해야합니다.
각 변경 후 자동 재 장전과 같은보다 장기간의 개발 및/또는 포장을 보려면 여기에서 Mozilla의 지침을 따라 웹 렉스 도구를 설치하고 사용하십시오.
Github의 저장소를 포크하고 컴퓨터로 복제하십시오.
구축 방법은 위의 지침을 따르십시오.
결국 Code를 TypeScript에서 JavaScript로 자동 변환하는 스크립트가 있어야하며 Firefox에서 SSS 버전을 실행하는 방법을 알아야합니다.
SSS에는 3 개의 주요 지점이 있습니다.
아래 코드 지침을 읽으십시오.
문제 목록에서 해결하려는 문제를 찾으십시오.
누군가가 이미 작업 중인지 물어보십시오. 또한 구현 방법에 대한 세부 정보가 없거나 가능한 접근 방식을 알고 싶다면 언제든지 문의하십시오!
구현하려는 새로운 기능 또는 버그 수정을위한 새 Git 브랜치를 만듭니다. 나중에 병합을 단순화하려면 "개발"에서이 분기를 생성하십시오 ( "마스터"에 모든 현재 변경 사항이 없을 수 있기 때문입니다).
변경 사항을 지점으로, 아마도 여러 커밋으로 구현/푸시하십시오.
마지막으로 변경 사항을 원래 저장소로 병합하기위한 풀 요청을 만듭니다. 코드 검토, 토론 및 필요한 경우 변경 사항이 적용됩니다.
감사해요!
SSS는 유형 체커가 많은 오류를 잡을 수 있기 때문에 유형 주석의 이점을 얻기 위해 JavaScript에서 TypeScript로 어느 시점에서 포팅되었습니다. 그러나 TypeScript가 스크립트가 다른 스크립트에서 코드/데이터를 가져올 수 있다고 가정하기 때문에 WebExtensions와 TypeScript와의 WebExtensions와의 상호 작용은 최상의 상태입니다. 실제로 WebExtensions 환경에 샌드 박스를 사용하고 거의 허용하지 않기 때문입니다.
컨텐츠 스크립트는 배경 스크립트에서 코드를 보거나 그 반대가 표시되지 않으며 여러 컨텐츠 스크립트가 서로의 코드를 볼 수있는 유일한 방법은 모두 HTML 페이지에 스크립트로 포함 된 방식과 마찬가지로 배경 스크립트에 의해 동일한 페이지에 모두 주입되는 경우입니다. TypeScript는 이것이 WebExtensions의 작동 방식이라는 것을 알지 못하므로 JavaScript로 올바르게 변환한다고해서 WebExtension이 작동한다는 의미는 아닙니다.
작동하는 예는 백그라운드 스크립트에서 유형/클래스를 선언하고 다른 스크립트에서 참조 할 수 있다는 것입니다. 우리는 유형 확인을 받고 괜찮습니다.
그러나 해당 클래스에 몇 가지 방법, 가변 할당 등을 추가하려고하면 콘텐츠 스크립트 또는 옵션 페이지 스크립트가 표시되지 않습니다. JavaScript로 전환 할 때는 WebExtensions 샌드 박스로 인해 런타임에 참조 할 수없는 다른 스크립트의 코드에 대한 참조로 남겨집니다. 이것은 또한 우리가 const enum 으로 선언하지 않는 한, 열거 (구체적인 값, "데이터")의 경우에도 적용되며,이 경우 TypeScript는 JavaScript 객체를 만드는 대신 사용되는 위치에 값을 복사합니다.
따라서이 프로젝트의 스크립트 (예 : 배경 스크립트 및 페이지 스크립트)에서 하나 이상의 스크립트에서 클래스가 완전히 또는 부분적으로 선언 된 경우 위의 이유는 이유입니다.
실패 할 수있는 또 다른 것은 instanceof 사용하여 객체가 특정 클래스인지 확인하는 것입니다. 샌드 박스로 인해 실패 할 수 있으므로 맞춤형 클래스를 위해이 작업을 수행하지 마십시오.