2012-02-18 12 views
1

私はオムニボックスと統合された拡張機能を作成しました。まさにこれは何オムニボックス内の "Run <extension>コマンド"とは何ですか?

:私は、キーワード+スペースして、拡張子に送信するフレーズに入力したとき、私は、アドレスバーで一番上の行は、「ファイル名を指定して実行私-extenison名コマンド」と言うことがわかります?私はおそらく私の拡張機能のメソッドを呼び出すために何とかこれを使用できますか? それが可能なら本当にいいですが、私はこれに関する情報を見つけることができません。

答えて

1

ユーザーがコマンドを選択すると、onInputEnteredイベントに追加したすべてのリスナーが発生します。

参照:

chrome.omnibox.onInputEntered.addListener(function(text) { 
    console.log('User entered command: ' + text); 
}; 

あなたはまたの通知を取得することができます。http://code.google.com/chrome/extensions/omnibox.html#event-onInputEntered

はそうです、あなたがそうのように、ちょうどそのイベントにリスナーを追加することで、アドレスバーは、あなたの拡張機能のコール方法を指令することができます入力時にユーザーのオムニバスのアクティビティや、上にリンクされたページにリストされている他のイベントのリスナーを追加して入力をキャンセルした場合

+0

はい、これはユーザー入力を処理するために使用しているリスナーです。この特定の拡張機能では、ユーザーが選択できるURLをいくつか挙げていますが、これはこの「実行コマンド」行の下にリストされています。私が思っているのは、最初の行が基本的に表現しているものです。 –

+0

ええと、あなたが今言っていることは、私が投稿したリンクのスクリーンショットにあります。それは変だ。たぶん、それは 'initfromvalue'というJSコマンドを実行しますか?よく分かりません。 –

2

Run <your-extension-name> command」は、あなたの拡張機能のオムニボックスの「デフォルト」のデフォルト候補です。これは基本的に現在入力されているもののプレースホルダーで、ユーザーがその時点でEnterキーを押した場合(「xの検索」)これを変更するには、ちょうどあなたの背景ページにこれを追加し

chrome.omnibox.setDefaultSuggestion({"description" : "your description here"}); 
あなたは「%s」はそこにあるだけでなく、ユーザが入力している何のためのプレースホルダを使用することができます。

ジェイソンはあなたの方法で正しかった

onInputEnteredを使用して、オムニボックスに何かを入力したユーザーに反応することができます。

1

私の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 
    } 
); 

愚かですが効果的です。

関連する問題