2014-04-01 4 views
2

У моего расширения Chrome есть всплывающее окно с несколькими ссылками, которые я хотел бы открыть на текущей вкладке, если это новая вкладка или открыть другую вкладку в противном случае. Поэтому я считаю, что мне нужно знать URL активной вкладки. Или есть другой способ идентифицировать новую вкладку?Как узнать, вызывается ли расширение Chrome на странице новой вкладки?

Я бы хотел использовать разрешение «activeTab», а не «вкладки». Я хочу, чтобы пользователь видел как можно меньше разрешений.

Единственный способ я нашел, чтобы определить URL этой вкладки является использование фона страницы и

chrome.browserAction.onClicked.addListener(function(tab)) 

Но это не совместимо с наличием всплывающего окна, определенного в манифесте. Я могу настроить всплывающее окно программно, но я не вижу способа сделать всплывающее окно. Есть ли способ сделать это?

Когда я default_popup определен в манифесте я использую

document.addEventListener('DOMContentLoaded', function()) 

запустить соответствующий код, поэтому никаких ссылок на активной вкладке не доступно. Есть ли другой способ запустить код или получить активную вкладку?

Спасибо.

ответ

2

Разрешение activeTab позволяет «получить URL, название и значок для этой вкладки через API, который возвращает объект tabs.Tab». Таким образом, чтобы получить текущий URL-адрес вкладки из всплывающего окна, вы можете:

chrome.tabs.query({active:true, currentWindow: true}, function(tabs) { 
    currentUrl = tabs[0].url; 
}); 
+0

Как расстраивает! У меня был такой же код, что и у меня, но я использовал консоль для просмотра URL-адреса, и он сообщался как «неопределенный». Когда я ввожу строку URL-адресов на всплывающую страницу, она всегда показывает, чего вы ожидаете. Только когда я добавляю разрешение «tabs», что консоль сообщает правильный URL-адрес! Спасибо за вашу помощь. – Pudica

Смежные вопросы