私のChrome拡張機能Lil’ Launchの場合、これは既定の候補を使用していない(あなたのブックマークのみを検索します)。
完全なソースはon Githubですが、一般的な考え方はこれです。 chrome.omnibox.onInputEntered
のコールバックには、選択項目またはのいずれかのcontent
プロパティが、提案がデフォルトの場合はユーザー入力の値が渡されます。したがって、すべてのcontent
プロパティの先頭に既知の文字列を追加し、chrome.omnibox.onInputEntered
が起動したときに同じ文字列を確認します。これは、使用する可能性が低いものでなければなりません。そうしないと、マッチングが破られます。
var resultsList = [], // Accessible from the callback scope
unlikely = "GOSHDARNYOUCHROME"; // Our unlikely to be typed String
chrome.omnibox.onInputChanged.addListener(
function(text, suggest) {
var searchResults = chrome.bookmarks.search(text, function(searchResults) {
resultsList = [];
for (var i = 0; i < searchResults.length; i++) {
resultsList.push({
content: unlikely + item.url, // Prepend our unlikely string to the URL
description: "bar"
});
};
// Chrome adds a completely useless default suggestion in our case
// So set the default and slice it off the suggestions
chrome.omnibox.setDefaultSuggestion({ description: resultsList[0].description });
suggest(resultsList.slice(1, -1));
})
}
);
chrome.omnibox.onInputEntered.addListener(
function(text) {
// If text doesn't have unlikely prepended its the stupid default
if(text.substring(0, unlikely.length) !== unlikely) {
text = resultsList[0].content;
}
text = text.substring(unlikely.length); // Trim the unlikely string
// Do something with text
}
);
愚かですが効果的です。
はい、これはユーザー入力を処理するために使用しているリスナーです。この特定の拡張機能では、ユーザーが選択できるURLをいくつか挙げていますが、これはこの「実行コマンド」行の下にリストされています。私が思っているのは、最初の行が基本的に表現しているものです。 –
ええと、あなたが今言っていることは、私が投稿したリンクのスクリーンショットにあります。それは変だ。たぶん、それは 'initfromvalue'というJSコマンドを実行しますか?よく分かりません。 –