implement simple tab switch
This commit is contained in:
parent
f1d4bb8c37
commit
8e5ceebf61
3 changed files with 46 additions and 6 deletions
|
@ -1,4 +1,18 @@
|
|||
import * as tabs from './tabs';
|
||||
|
||||
const KEY_MAP = {
|
||||
'tabs.prev': 104,
|
||||
'tabs.next': 108
|
||||
};
|
||||
|
||||
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||
console.log("Pressed " + request.which);
|
||||
sendResponse({ response: "Response from background script" });
|
||||
switch (request.key) {
|
||||
case KEY_MAP['tabs.prev']:
|
||||
tabs.selectPrevTab(sender.tab.index);
|
||||
break;
|
||||
case KEY_MAP['tabs.next']:
|
||||
tabs.selectNextTab(sender.tab.index);
|
||||
break;
|
||||
}
|
||||
sendResponse();
|
||||
});
|
||||
|
|
23
src/background/tabs.js
Normal file
23
src/background/tabs.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
const selectPrevTab = (current) => {
|
||||
chrome.tabs.query({ currentWindow: true }, (tabs) => {
|
||||
if (tabs.length < 2) {
|
||||
return;
|
||||
}
|
||||
let select = (current - 1) % tabs.length
|
||||
let id = tabs[select].id;
|
||||
chrome.tabs.update(id, { active: true })
|
||||
});
|
||||
};
|
||||
|
||||
const selectNextTab = (current) => {
|
||||
chrome.tabs.query({ currentWindow: true }, (tabs) => {
|
||||
if (tabs.length < 2) {
|
||||
return;
|
||||
}
|
||||
let select = (current + 1 + tabs.length) % tabs.length
|
||||
let id = tabs[select].id;
|
||||
chrome.tabs.update(id, { active: true })
|
||||
});
|
||||
};
|
||||
|
||||
export { selectNextTab, selectPrevTab };
|
|
@ -1,9 +1,12 @@
|
|||
window.addEventListener("keypress", (e) => {
|
||||
browser.runtime.sendMessage({
|
||||
which: e.which || e.keyCode,
|
||||
}).then((msg) => {
|
||||
console.log(`Message from the background script: ${msg.response}`);
|
||||
key: e.which || e.keyCode,
|
||||
shift: e.shift,
|
||||
alt: e.alt,
|
||||
meta: e.meta,
|
||||
ctrl: e.ctrl,
|
||||
}).then(() => {
|
||||
}, (err) => {
|
||||
console.log(`Error: ${err}`);
|
||||
console.log(`Vim Vixen: ${err}`);
|
||||
});
|
||||
});
|
||||
|
|
Reference in a new issue