Как я могу получить URL -адрес текущей вкладки с расширения Google Chrome?
-
22-09-2019 - |
Вопрос
Мне весело с расширением 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);
});
Вы должны проверить это.
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);