Как оставаться на текущей / переключиться на предыдущую вкладку?
Недавно изучил написание расширения Chrome. Сейчас моё расширение работает с манипуляцией страницы некого сайта в интернете. При определенном действии запускается window.open() по ссылке, и соответственно происходит переключение на эту новую страницу - вкладку в браузере.
Но я бы хотел оставаться на текущей странице. Как понял из гугл это невозможно. Тогда решил пойти путём переключения на предыдущую вкладку после открытия новой.
Тут я наткнулся на такую штуку как tabid - т.е. решил что можно запомнить id вкладки, и переходить на неё. Здесь применяется chrome.tabs.query
Тут тоже обнаружился подвох - этот метод можно вызывать только в background.js
ок, дальше я наткнулся на такие методы как
в background.js: chrome.runtime.onMessage.addListener
в script.js (который работает со страницей сайта) chrome.runtime.sendMessage
и что-то пытался сделать на основе этого. Вроде примеров полно в интернете, но не для моего случая.
У меня не срабатывал sendResponse
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.query({active: true, currentWindow: true},
function(tabs) {
var currTab = tabs[0];
if (currTab) {
console.log(currTab.id);
sendResponse({tabId: currTab.id});
}
});
});
И вообще не совсем понятно что делать с этим дальше.
Итак - как мне вернуться... Мне всего лишь нужно вернуться на предыдущую вкладку... :)
Может быть на основе тех методов, может быть есть другие ходы.
Ответы (1 шт):
Нашел решение тут: https://stackoverflow.com/questions/6897430/prevent-window-open-from-focusing/6897462#6897462
Однако после этого перестал работать window.close() . Решил это таким кодом в бекграунде (background.js)
chrome.tabs.getSelected(null,
function(tab) {
chrome.tabs.remove(sender.tab.id);
});