Подтвердить что ты не робот

Как получить открытый URL-адрес вкладки во всплывающем окне страницы?

Я хочу создать расширение для автоматического входа на мои серверы. Поэтому я создал справочную страницу, чтобы проверить текущий URL-адрес, и если он соответствует моему URL-адресу, я покажу значок действия страницы. При нажатии на действие страницы я открываю всплывающее окно с некоторыми полями. Мне нужно получить открытый URL и заполнить его в одном из полей всплывающего окна (например, когда мы нажимаем на действие стандартной страницы закладок, URL-адрес автоматически заполняется всплывающим окном, который открывается). Как я могу сделать что-то подобное в chrome-расширениях? Я попытался передать сообщение с фоновой страницы во всплывающее html, но он не работает. Можно ли отправлять такие сообщения? Также я попытался установить onload для всплывающего html файла, но я заметил, что он не запускается. Пожалуйста, предложите подходящий метод для решения этого сценария.

4b9b3361

Ответ 1

Используйте chrome.tabs.query со следующими параметрами:

  • объект queryInfo:
    • active: true - Чтобы получить активную вкладку
    • lastFocusedWindow: true - Чтобы выбрать активное окно
  • функция обратного вызова:
    Эта функция получает один аргумент: массив совпадающих вкладок. Поскольку только одно окно может быть активным, и одна вкладка внутри этого окна, массив имеет только один элемент. Этот элемент является объектом с Tab сигнатурой.

Фрагмент кода:

// Do NOT forget that the method is ASYNCHRONOUS
chrome.tabs.query({
    active: true,               // Select active tabs
    lastFocusedWindow: true     // In the current window
}, function(array_of_Tabs) {
    // Since there can only be one active tab in one active window, 
    //  the array has only one element
    var tab = array_of_Tabs[0];
    // Example:
    var url = tab.url;
    // ... do something with url variable
});

Для этого достаточно разрешения activeTab.

Ответ 2

Вы также можете использовать promises для более чистого способа получения вкладки:

  getCurrentTab().then(function(tab){
    // Do something w/tab
  });

  function getCurrentTab(){
    return new Promise(function(resolve, reject){
      chrome.tabs.query({
        active: true,               // Select active tabs
        lastFocusedWindow: true     // In the current window
      }, function(tabs) {
        resolve(tabs[0]);
      });
    });
  }