我正在尝试进行一个简单的扩展,将所选单词添加到数组中,然后显示它。
一切正常,但我现在正在尝试添加键盘快捷键以执行与右键单击>相同的操作;点击我的扩展图标。
我不明白如何使用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')
放入其中,警报就会显示出来。
答案 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]);
}
);
});
});