これについてはこちらをご覧ください。
Swift Selection Search(SSS)は、お気に入りの検索エンジンを使用してページでいくつかのテキストをすばやく検索するためのFirefoxアドオンです。
ページでテキストを選択し、検索エンジンを備えた小さなポップアップボックスがカーソルの上に表示されます。 1つを押すと、そのエンジンを使用して選択したテキストを自動的に検索できます!
SSSは設定可能です。ポップアップに表示される検索エンジン、アイコンの外観、クリックしたときに何が起こるか、ポップアップが表示される場所、ページがスクロールするときに非表示にするかどうか、選択にテキストを自動コピーする場合、さらに多くのオプションを定義できます。
また、エンジンのいずれかで検索するためのオプションのコンテキストメニューも取得します。必要に応じて、この追加メニューをオプションで無効にすることができます。また、ポップアップ自体を無効にし、このコンテキストメニューのみを残すオプションもあります。あなたの選択。 :)
SSSは、MozillaアドオンズのWebサイトで入手できます。
https://addons.mozilla.org/firefox/addon/swift-selection-search
第一に、WebExtensionsはJavaScriptで作成されているため、TypeScriptをJavaScriptに変換できるようにする必要があります。
NPMをインストールします。 https://nodejs.orgからnode.jsをダウンロードすると、 npmが並んでいます。
プロジェクトのフォルダーで、これをコマンドラインで実行します。
NPMインストール
これにより、プロジェクトのタイプスクリプト依存関係がフォルダーnode_modulesにローカルにインストールされます。
すべての.tsスクリプトを.js(Windows)に透過させるには:
"node_modules/.bin/tsc.cmd" -watch -p tsconfig.json
コマンドは生き続け、.tsファイルの変更後にコードを自動的に再輸送します。これは、開発中に便利です。
これで.jsファイルができるようになるので、SSSをWebExtensionとして使用できます。わーい!
短い開発または単なる好奇心のために、SSSを試すより簡単な方法は、Firefoxの#アドオンページのデバッグ#デバッグです。 「一時アドオンのロード」ボタンを押し、Swift選択検索「SRC」ディレクトリ( Manifest.jsonなど)のファイルを選択すると、ブラウザが閉じるまでアドオンをロードします。ほとんどのコードへの変更には、アドオンを再度リロードする必要があります。
変更後の自動リロードなど、より長期にわたる開発やパッケージについては、ここでMozillaの指示に従って、 Web-Extツールをインストールして使用してください。
githubのリポジトリをフォークし、コンピューターにクローンします。
構築方法については、上記の指示に従ってください。
最終的に、TypeScriptからJavaScriptにコードを自動的に送信するスクリプトが必要であり、SSS on Firefoxのバージョンを実行する方法を知っている必要があります。
SSSには3つの主要なブランチがあることを学びます。
以下のコードガイドラインをお読みください。
問題リストで解決したい問題を見つけてください。
誰かがすでにそれに取り組んでいるかどうか尋ねてください。さらに、実装方法の詳細や、可能なアプローチを知りたい場合は、お気軽にお問い合わせください!
実装しようとしている新機能またはバグ修正用の新しいgitブランチを作成します。 「開発」からこのブランチを作成して、後でマージを簡素化します(「マスター」にはすべての現在の変更がない場合があります)。
おそらく複数のコミットで、変更をブランチへの実装およびコミット/プッシュ。
最後に、変更を元のリポジトリにマージするためのプルリクエストを作成します。コードレビュー、議論、および必要に応じて変更される場合があります。
ありがとう!
SSSは、型チェッカーによって多くのエラーがキャッチできるため、型注釈の利点を取得するために、JavaScriptからTypeScriptまでのある時点で移植されました。ただし、Typesscriptは、実際にはWebExtensions環境にサンドボックスがあり、それを許可しない場合、スクリプトは他のスクリプトからコード/データをインポートできるとTypeScriptは想定しているため、WebExtensionsとTypeScriptとの相互作用はせいぜい気味が悪いことに注意してください。
コンテンツスクリプトは、バックグラウンドスクリプトまたはその逆からコードが表示されません。複数のコンテンツスクリプトが互いのコードを表示できる唯一の方法は、それらがすべて同じページに、HTMLページにスクリプトとしてどのように含まれているかと同様に、同じページに注入されている場合です。 TypeScriptは、これがWebExtensionsの仕組みであるとは考えていないため、JavaScriptに正しく透過しているからといって、WebExtensionが機能するわけではありません。
動作する例は、バックグラウンドスクリプトでタイプ/クラスを宣言し、他のスクリプトでそれらを参照できることです。タイプチェッカーのみがそれらを気にかけているためです。タイプチェックを受けていますが、問題ありません。
ただし、これらのクラスにいくつかのメソッド、可変割り当てなどを追加しようとすると、コンテンツスクリプトまたはオプションページスクリプトはこれらが表示されません。 JavaScriptに翻訳すると、WebExtensionsのサンドボクシングのために実行時に参照することはできません。これは、それらをconst enumとして宣言しない限り、enums(具体的な値を持つため、「データ」)にも当てはまります。
したがって、このプロジェクトの複数のスクリプトで完全または部分的に宣言されているクラス(たとえば、バックグラウンドスクリプトとページスクリプトの両方で)が表示される場合、上記は理由です。
失敗する可能性のあるもう1つのことは、 instanceofを使用して、オブジェクトが特定のクラスであるかどうかを確認することです。サンドボクシングのために失敗する可能性があるため、カスタム作成されたクラスでこれを行わないでください。