将参数传递给chrome.commands

时间:2014-09-19 19:43:33

标签: javascript google-chrome google-chrome-extension

我正在尝试进行一个简单的扩展,将所选单词添加到数组中,然后显示它。

一切正常,但我现在正在尝试添加键盘快捷键以执行与右键单击>相同的操作;点击我的扩展图标。

我不明白如何使用chrome.commands函数将所选文本添加到数组中。

这就是我在后台页面中的内容:

var Words = []
...
function addToArray(info, tab) {
    var text = info.selectionText;
    Words.push(text);
}

和我的chrome.commads听众:

 chrome.commands.onCommand.addListener(function(info, tab) {
        addToArray(info, tab); // When I press keyboard shortcut, the word 'undefined' is added to the array...?
    });

当我按下快捷方式时,出现了问题,因为我得到了“未定义”的错误信息。在我的阵列中,但我不知道什么!后台页面上的控制台没有错误。

有人可以帮我解决这个问题吗?感谢。

显然,chrome.commands监听器正在工作,因为我未定义,但是,如果我将alert('test')放入其中,警报就会显示出来。

1 个答案:

答案 0 :(得分:1)

简而言之,您不能

the documentation所述,onCommand的回调仅获取触发命令的名称。

因此,要获得选择,您需要以某种方式从侦听器中自行查询:

chrome.commands.onCommand.addListener(function(command) {
  chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    var tab = tabs[0]; // Got the tab
    // execute a content script to get the selection, for instance
    // You will need the "activeTab" permission
    chrome.tabs.executeScript(
      tab.id,
      {code: "getSelection().toString();"},
      function(results){
        Words.push(results[0]);
      }
    );
  });
});