あなたのエクステンションでChromeのOmniboxでキーワードを登録してください
10970 ワード
これを読むことができますmy personal blog
ChromeのAPIを使用すると、拡張モジュールの多くのことができます.そのうちの1つはクロムのアドレスバーにキーワードを登録することですOmnibox , ユーザーがキーワードを使用するときにユーザーの入力を処理する.
このチュートリアルでは、ユーザーの入力を処理するために、ChromeのアドレスバーまたはOmniboxでキーワードを登録する方法を説明します.我々が作成している拡張はキーワードを登録するでしょう
このチュートリアルではV 3の代わりにマニフェストV 2拡張モジュールを作成します.これはan error that occurs with the Omnibox API in manifest V3 この記事を書く時.
この記事の拡張モジュールの完全なコードはthis GitHub repository .
まず、拡張モジュールを作成します.まず、拡張モジュールを保持するディレクトリを作成します.次に、ディレクトリ内で
次はオープンクロームと
拡張子にキーワードを登録するには、新しいキーを追加する必要があります
では、
我々がちょうど加えたキーワードをテストしましょう.新しいタブを開き、アドレスバー(Omnibox)で入力します
タブを押すと、拡張機能のアイコンがOmniboxの左側に追加されます.これは、現在、拡張が入力されている入力を受け始めるということを意味します.我々はまだリスナーがユーザーの入力を処理するために追加されていないので、何かを入力した場合、現時点では何も起こりません.
OmniBox APIを使用する場合は、ユーザーが入力したものにかかわらず表示される既定の提案を指定できます.これを行うには、メソッドを使用できます
descriptionプロパティは、XMLスタイルを受け入れます.これは、ユーザーに表示している提案に最小限のスタイリングを適用するためにXMLタグを使用することを意味します.これらのタグは次のとおりです. XMLタグをネストすることもできます.たとえば、あなたもURLを強調表示することができます.
私たちのバックグラウンドスクリプトの冒頭では、我々は、ユーザーが結果を得るために入力する必要がある知っているようになるデフォルトの提案を追加します.の先頭に次を追加します
テストしましょう.まず、拡張モジュールを
この節では、ユーザーがキーワード入力後に入力を処理します.そのためにイベントリスナーをイベントに追加します
以下を加える
次に、Color恋人APIにリクエストを送り、色の情報を取得します.しかし、その前に、APIのURLを
リスナー内の背景スクリプトに次のように追加します.
提案オブジェクトには3つのプロパティがあります. 色を受信すると、私たちは
の代わりに次のコードを追加します
我々が扱う必要がある最後のイベントは、ユーザーがそれをクリックするか、または入力を押すことによって提案を選択するときです.このイベントは
我々がすることは、URLからURLを抽出することです
イン
テストしましょう.繰り返しますが、
ChromeのOmnibox APIを使用すると、あなたのユーザーに簡単に何かを見つけるか、特定のタスクを実行するためにあなたの拡張機能に機能を追加することができます.確認してくださいフルをチェックアウトするAPI reference このAPIで何ができるかについてもっと知ってください.
ChromeのAPIを使用すると、拡張モジュールの多くのことができます.そのうちの1つはクロムのアドレスバーにキーワードを登録することですOmnibox , ユーザーがキーワードを使用するときにユーザーの入力を処理する.
このチュートリアルでは、ユーザーの入力を処理するために、ChromeのアドレスバーまたはOmniboxでキーワードを登録する方法を説明します.我々が作成している拡張はキーワードを登録するでしょう
color
, それから、ユーザーがOmniboxでこのキーワードを使うとき、彼らは6文字の16進色を入力することができます.ユーザーがHEXに入ると、拡張子が使用されますCOLOURlovers' API 色に関する情報を取得し、RGBの色に相当するユーザーを与える.このチュートリアルではV 3の代わりにマニフェストV 2拡張モジュールを作成します.これはan error that occurs with the Omnibox API in manifest V3 この記事を書く時.
この記事の拡張モジュールの完全なコードはthis GitHub repository .
拡張子を作成
まず、拡張モジュールを作成します.まず、拡張モジュールを保持するディレクトリを作成します.次に、ディレクトリ内で
manifest.json
次のコンテンツを使用します.{
"name": "hex-to-rgb",
"description": "Convert Hexadecimal colors to RGB right from Chrome's Omnibox",
"version": "0.0.1",
"manifest_version": 2,
"icons": {
"16": "images/icon16.png",
"32": "images/icon32.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
アイコンのために私はicon そばThalita Torres on Iconscout . ウェブサイトやGithubリポジトリからのいずれかをダウンロードしてくださいし、それらの詳細と同じように配置してくださいmanifest.json
.次はオープンクロームと
chrome://extensions
. それから、それが有効でないならば、右上から開発者モードを可能にしてください.その後、展開したロードをクリックし、拡張モジュールの作成したディレクトリを選択します.その後の拡張子の一覧で拡張子が表示されます.omniboxキーワードを登録する
拡張子にキーワードを登録するには、新しいキーを追加する必要があります
omnibox
あなたのmanifest.json
. 値omnibox
がキーを持つオブジェクトkeyword
. 拡張モジュールでは、キーワードを使用しますcolor
. 以下を加えるmanifest.json
:"omnibox": {
"keyword": "color"
}
次に、ユーザーがキーワードを入力し、ユーザーの入力を処理するときに聞く背景スクリプトを追加する必要があります.以下を加えるmanifest.json
背景スクリプトを追加するには、次の手順に従います."background": {
"persistent": false,
"scripts": ["background.js"]
}
空のファイルを作成するbackground.js
ディレクトリのルートで.では、
chrome://extensions
もう一度、あなたの拡張のためのリフレッシュボタンをクリックしてください.登録された新しい背景ページが表示されます.我々がちょうど加えたキーワードをテストしましょう.新しいタブを開き、アドレスバー(Omnibox)で入力します
color
. あなたの提案を参照してくださいする必要がありますhex-to-rgb
これは我々が作成した拡張です.タブを押すと、拡張機能のアイコンがOmniboxの左側に追加されます.これは、現在、拡張が入力されている入力を受け始めるということを意味します.我々はまだリスナーがユーザーの入力を処理するために追加されていないので、何かを入力した場合、現時点では何も起こりません.
デフォルトの提案を追加
OmniBox APIを使用する場合は、ユーザーが入力したものにかかわらず表示される既定の提案を指定できます.これを行うには、メソッドを使用できます
chrome.omnibox.setDefaultSuggestion
. このメソッドは、あるプロパティを持つオブジェクトを受け入れますdescription
.descriptionプロパティは、XMLスタイルを受け入れます.これは、ユーザーに表示している提案に最小限のスタイリングを適用するためにXMLタグを使用することを意味します.これらのタグは次のとおりです.
<url>
: リンク内のテキストを表示します.<match>
: 強調表示の中にテキストを表示します.<dim>
: それは薄暗がりの中にテキストを表示します.私たちのバックグラウンドスクリプトの冒頭では、我々は、ユーザーが結果を得るために入力する必要がある知っているようになるデフォルトの提案を追加します.の先頭に次を追加します
background.js
:chrome.omnibox.setDefaultSuggestion({
description: 'Enter a hex code of 6 characters to convert to RGB (for example, <match>ffffff</match>)'
});
注意してくださいdescription
, XMLタグを使いました<match>ffffff</match>
. つまり、その提案ffffff
が強調表示されます.テストしましょう.まず、拡張モジュールを
chrome://extensions
我々が前にしたように.次に、型color
新しいタブとヒットでTAB
. 文字を入力してみてください、あなたは私たちだけで定義された提案を参照してくださいよbackground.js
. デフォルトの提案は、少なくとも1文字が入力されるまで表示されません.ハンドル入力
この節では、ユーザーがキーワード入力後に入力を処理します.そのためにイベントリスナーをイベントに追加します
chrome.omnibox.onInputChanged
. リスナーは2つのパラメータを受け取ります.text
これはユーザが入力したテキストですsuggest
これはユーザがChromeに戻ることを提案するために使用するコールバック関数です.このイベントは、ユーザーが文字を入力するたびにトリガされます.以下を加える
background.js
:chrome.omnibox.onInputChanged.addListener((text, suggest) => {
//check that the length of the text is 6 characters
if (text.length !== 6) {
suggest([]);
return;
}
//TODO send the text to the API
});
我々のリスナーでは、今のところ、我々はちょうどテキストの長さが6でないかどうかチェックしていますsuggest
コールバックで空の配列を渡します.次に、Color恋人APIにリクエストを送り、色の情報を取得します.しかし、その前に、APIのURLを
manifest.json
APIへのリクエストが許可されるように.以下を加えるmanifest.json
:"permissions": [
"http://www.colourlovers.com/*"
]
バックグラウンドスクリプトに戻ると、エンドポイントにリクエストを送りますhttp://www.colourlovers.com/api/color/ 使用Fetch API . このエンドポイントは、色をパラメーターとして受け取り、配列を返します.配列は、色が見つからない場合(例えば、無効な色の場合)、または色に関する詳細を持つオブジェクトを保持する配列を空にします.たとえば、URLを開くhttp://www.colourlovers.com/api/color/ffffff?format=json ブラウザで、レスポンスがどのように見えるか確認してください.リスナー内の背景スクリプトに次のように追加します.
//send text to API
fetch('http://www.colourlovers.com/api/color/' + text + '?format=json')
.then((response) => response.json())
.then((data) => {
if (!data.length) {
//no color was found
suggest([]);
} else {
//TODO send suggestion when color exists
}
})
色が見つからなかった場合、空の配列をsuggest
コールバック.私たちは、次に色が見つけられた方法と提案が送られなければならないケースを扱う必要があります.提案オブジェクトには3つのプロパティがあります.
content
: ユーザーが提案を示すとき、オムニボックスの中に置かれるテキストを保持します.deletable
: ユーザーが提案の履歴から提案を削除することができます.このプロパティは省略可能です.description
: 我々が使用したdescriptionプロパティに似ていますsetDefaultSuggestion
, これは、ユーザーが提案の一覧で表示されるテキストになります.前のセクションで述べたように、XMLタグを使ってスタイルを整えることができます.content
ユーザーの場合は、RGB値と色のURLの場合は、ユーザーが追加情報を参照してくださいする必要があります.私たちはdescription
色の名前は、16進数コード、およびURLを参照してください.の代わりに次のコードを追加します
TODO
前のコードブロックで追加しました.suggest([
{
content: `${data[0].rgb.red}, ${data[0].rgb.green}, ${data[0].rgb.blue} url: ${data[0].url}`,
deletable: true,
description: `Color name: ${data[0].title}, hex: <match>${data[0].hex}</match>, more information: <url>${data[0].url}</url> `
}
])
HexをRGBに変換する我々のコードは、されます.繰り返しますが、chrome://extensions
, 新しいタブを開きますcolor
オムニボックスで、ヒットタブ.次に、16進数の色を入力します.例えば、f5f5f5
. あなたは以下の新しい提案を参照してください.キーボードを上下に矢印を使用して提案を指さしてみてください、そしてあなたはOmniBoxの内容は、我々が設定したテキストに変更されていることがわかりますcontent
.提案選択ハンドル
我々が扱う必要がある最後のイベントは、ユーザーがそれをクリックするか、または入力を押すことによって提案を選択するときです.このイベントは
chrome.omnibox.onInputEntered
. このイベントへのリスナーは2つのパラメータを受け取りますtext
これはオムニボックス内のテキストですOnInputEnteredDisposition
, これは、新しいURLがオープンされなければならないことを示しますcurrentTab
, newForegroundTab
or newBackgroundTab
.我々がすることは、URLからURLを抽出することです
text
, もしOnInputEnteredDisposition
is currentTab
, 現在のタブのURLをURLで置き換えます.また、新しいタブをURLで開きます.イン
background.js
次を追加します.chrome.omnibox.onInputEntered.addListener((text, OnInputEnteredDisposition) => {
const prefixIndex = text.indexOf('url: ');
if (prefixIndex !== -1) {
const url = text.substring(prefixIndex + 'url: '.length)
console.log(url);
if (OnInputEnteredDisposition === 'currentTab') {
chrome.tabs.create({url});
} else {
chrome.tabs.update({url});
}
}
});
前に説明したように、我々はURL
からtext
我々が書いた形式に基づきますcontent
. それから、私たちはの値に基づいてURLを開きますOnInputEnteredDisposition
.テストしましょう.繰り返しますが、
chrome://extensions
, 新しいタブを開きますcolor
オムニボックスで、ヒットタブ.次に、16進数の色を入力します.例えば、f5f5f5
. をクリックして提案の色、またはそれをポイントし、キーボード上の上下の矢印で表示さをクリックして入力してください.あなたは色についての情報と色の愛好家のページに撮影されます.結論
ChromeのOmnibox APIを使用すると、あなたのユーザーに簡単に何かを見つけるか、特定のタスクを実行するためにあなたの拡張機能に機能を追加することができます.確認してくださいフルをチェックアウトするAPI reference このAPIで何ができるかについてもっと知ってください.
Reference
この問題について(あなたのエクステンションでChromeのOmniboxでキーワードを登録してください), 我々は、より多くの情報をここで見つけました https://dev.to/shahednasser/register-a-keyword-in-chrome-s-omnibox-in-your-extension-5ceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol