多功能框中的“运行<扩展>命令”是什么?</extension>

时间:2012-02-18 09:58:23

标签: google-chrome-extension

我创建了一个与多功能框集成的扩展程序。当我输入关键字+空格然后输入要发送到扩展名的短语时,我可以看到多功能框中的顶行显示“运行 my-extenison-name 命令:”

这是什么意思?我能以某种方式使用它来调用我的扩展中的方法吗? 如果有可能会很好,但我找不到任何关于此的信息。

3 个答案:

答案 0 :(得分:2)

Run <your-extension-name> command”只是扩展程序多功能框的“默认”默认建议。它基本上是当前输入的占位符,并且应该指示如果用户在该点按Enter键将会发生什么(“搜索我的站点为'x'”)。要更改它,只需将其添加到您的背景页

chrome.omnibox.setDefaultSuggestion({"description" : "your description here"});

您可以在其中使用“%s”以及用户输入内容的占位符。

杰森在如何使用onInputEntered对用户输入多功能框中的内容做出反应方面是正确的。

答案 1 :(得分:1)

当用户选择该命令时,您添加到onInputEntered事件的所有侦听器都将被触发。

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

所以,是的,您可以在扩展中使用Omnibox命令调用方法,只需向该事件添加一个监听器,如下所示:

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

您还可以通过为上面链接的页面上列出的其他事件添加侦听器来获取用户在输入时通知多用途活动的通知,或者取消输入的通知。

答案 2 :(得分: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
  }
);

愚蠢但有效。