2012-02-18 59 views
1

我创建了一个与多功能框集成的扩展。当我在关键词+空格,然后发送到扩展短语键入,我可以看到,在网址列中最上面一行写着“运行我-extenison名命令:”什么是多功能框中的“运行<extension>命令”?

究竟这是什么道理?我可以用这种方式在我的扩展中调用方法吗? 这将是非常好的,如果有可能,但我无法找到任何信息。

回答

1

当用户选择该命令时,您添加到onInputEntered事件的任何听众都将被触发。

参见:http://code.google.com/chrome/extensions/omnibox.html#event-onInputEntered

所以,是的,你可以有网址列命令调用方法在扩展,只需添加一个侦听器的事件,像这样:

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

您还可以得到通知用户在输入时的多功能框活动,或者如果他们取消输入,则为上面链接的页面上列出的其他活动添加监听器。

+0

是的,这些是我用来处理用户输入的监听器。对于这个特定的扩展,我列出了一些用户可以选择的URL,但是这些列在这个“运行命令”行下面。我想知道的是第一行所代表的基本内容。 – 2012-02-18 10:52:32

+0

嗯,我看到你现在说的话,在我发布的链接截图中。这很奇怪。也许它运行一个名为'initfromvalue'的JS命令?我不确定。 – 2012-02-19 19:37:16

2

Run <your-extension-name> command”仅仅是您的扩展程序的多功能框的“默认”默认建议。它基本上是当前输入内容的占位符,并且应该指出如果用户在该点按下输入时会发生什么(“搜索我的站点以查找'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 
    } 
); 

笨,但有效。

相关问题