Как я могу получить URL -адрес текущей вкладки с расширения Google Chrome?

StackOverflow https://stackoverflow.com/questions/1979583

Вопрос

Мне весело с расширением Google Chrome, и я просто хочу знать, как я могу сохранить URL -адрес текущей вкладки в переменной?

Это было полезно?

Решение

Обновлять: А chrome.tabs.getSelected() Метод теперь устарел.

Рекомендуемый способ получить URL -адрес текущей вкладки - использовать chrome.tabs.query().

Пример использования:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
});

Это требует, чтобы вы запросили доступ к chrome.tabs API в вашем Расширение проявляется:

"permissions": [ ...
   "tabs"
]

Важно отметить, что определение вашей «текущей вкладки» может отличаться в зависимости от потребностей вашего расширения.

Параметр lastFocusedWindow: true В запросе подходит, когда вы хотите получить доступ к текущей вкладке в окне сфокусированного пользователя (обычно самое верхнее окно).

Параметр currentWindow: true Позволяет получить текущую вкладку в окне, где в настоящее время выполняется код расширения. Например, это может быть полезно, если ваше расширение создает новое окно / всплывающее окно (изменение фокуса), но все еще хочет получить доступ к информации вклада из окна, где было запущено расширение.

Я решил использовать lastFocusedWindow: true В этом примере, потому что Google вызывает случаи, в которых currentWindow не всегда может присутствовать.

Вы можете еще больше уточнить свой запрос вкладок, используя любое из свойств, определенных здесь: Chrome.tabs.query

Другие советы

Друг отвечает на мой вопрос.

Во -первых, вы установите разрешения для API TAB:

"permissions": [
    "tabs"
]

И хранить URL:

chrome.tabs.getSelected(null,function(tab) {
    var tablink = tab.url;
});

Другие ответы предполагают, что вы хотите знать это из всплывающего или фонового скрипта.

Если вы хотите узнать текущий URL -адрес из сценария контента, стандартный js Way применяется:

window.location.toString()

Вы можете использовать свойства window.location Чтобы получить доступ к отдельным частям URL, таким как хост, протокол или путь.

Проблема в том, что chrome.tabs.getSelected является асинхронным. Этот код ниже, как правило, не будет работать, как и ожидалось. Значение «Tablink» все равно будет не определена, когда она записана на консоли, потому что GetSelected еще не вызвал обратный вызов, который сбрасывает значение:

var tablink;
chrome.tabs.getSelected(null,function(tab) {
    tablink = tab.url;
});
console.log(tablink);

Решение состоит в том, чтобы обернуть код, в котором вы будете использовать значение в функции, и это вызовов путем SeatSelected. Таким образом, у вас всегда будет набор значений, потому что ваш код должен будет ждать предоставленного значения до его выполнения.

Попробуйте что -то вроде:

chrome.tabs.getSelected(null, function(tab) {
    myFunction(tab.url);
});

function myFunction(tablink) {
  // do stuff here
  console.log(tablink);
}

Привет, вот образец Google Chrome, который отправляет по электронной почте текущий сайт другу. Основная идея- это то, что вы хотите ... Во-первых, она получает содержание страницы (не мешает вам) ... потом получает URL (<- хорошая часть)

Кроме того, это хороший пример рабочего кода, который я предпочитаю, чтобы подсказывать чтение документов.

Можно найти здесь:Отправьте электронное письмо на эту страницу

Для тех, кто использует context menu api, Документы не сразу понявают, как получить информацию о вкладке.

  chrome.contextMenus.onClicked.addListener(function(info, tab) {
    console.log(info);
    return console.log(tab);
  });

https://developer.chrome.com/extensions/contextmenus

Вы должны проверить это.

HTML

<button id="saveActionId"> Save </button>

manifest.json

  "permissions": [
    "activeTab",
    "tabs"
   ]

JavaScript
Приведенный ниже код сохранит все URL -адреса активного окна в объект JSON как часть кнопки нажатия.

var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
    myArray = [];
    chrome.tabs.query({"currentWindow": true},  //{"windowId": targetWindow.id, "index": tabPosition});
    function (array_of_Tabs) {  //Tab tab
        arrayLength = array_of_Tabs.length;
        //alert(arrayLength);
        for (var i = 0; i < arrayLength; i++) {
            myArray.push(array_of_Tabs[i].url);
        }
        obj = JSON.parse(JSON.stringify(myArray));
    });
}, false);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top