Я получаю удовольствие от расширения Google Chrome, и я просто хочу знать, как сохранить URL-адрес текущей вкладки в переменной?
Как я могу получить URL-адрес текущей вкладки из расширения Google Chrome?
Ответ 1
Друг отвечает на мой вопрос.
Сначала вы должны установить разрешения для API вкладок:
"permissions": [
"tabs"
]
И сохранить URL-адрес:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
Ответ 2
Обновление: Метод chrome.tabs.getSelected()
теперь устарел.
Рекомендуемым способом получения URL-адреса текущей вкладки является использование chrome.tabs.query()
.
Пример использования:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
});
Это требует, чтобы вы запросили доступ к API chrome.tabs
в своем расширении :
"permissions": [ ...
"tabs"
]
Важно отметить, что определение вашей "текущей вкладки" может отличаться в зависимости от потребностей вашего расширения.
Настройка lastFocusedWindow: true
в запросе подходит, когда вы хотите получить доступ к текущей вкладке в окне, ориентированном на пользователя (обычно это самое верхнее окно).
Настройка currentWindow: true
позволяет вам получить текущую вкладку в окне, в котором выполняется ваш код расширения. Например, это может быть полезно, если ваше расширение создает новое окно/всплывающее окно (изменение фокуса), но все же хочет получить доступ к информации о табе из окна, в котором выполнялось расширение.
Я решил использовать lastFocusedWindow: true
в этом примере, потому что Google вызывает случаи, когда currentWindow
может не всегда присутствовать.
Вы можете дополнительно уточнить свой запрос на вкладку, используя любое из свойств, определенных здесь: chrome.tabs.query
Ответ 3
Проблема заключается в том, что chrome.tabs.getSelected является асинхронным. Этот код ниже, как правило, не работает должным образом. Значение "tablink" по-прежнему будет undefined, когда оно будет записано в консоль, потому что getSelected еще не вызвал обратный вызов, который сбрасывает значение:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
Решение состоит в том, чтобы обернуть код, в котором вы будете использовать значение в функции, и вызвать вызванное методом getSelected. Таким образом, у вас всегда будет установлен набор значений, потому что вашему коду придется ждать, пока значение будет предоставлено до его выполнения.
Попробуйте что-то вроде:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
Ответ 4
Другие ответы предполагают, что вы хотите узнать это из всплывающего окна или фона script.
Если вы хотите узнать текущий URL из контента script, применяется стандартный способ JS:
window.location.toString()
Вы можете использовать свойства window.location
для доступа к отдельным частям URL-адреса, таким как хост, протокол или путь.
Ответ 5
Привет, вот пример Google Chrome, который отправляет текущему сайту другу. Основная идея заключается в том, что вы хотите... прежде всего, он выбирает содержимое страницы (не интересует вас)... после этого он получает URL (< - good part)
Кроме того, это хороший пример рабочего кода, который я предпочитаю читать документы.
Здесь можно найти: Отправить эту страницу по электронной почте
Ответ 6
Для тех, кто использует context menu api
, документы не сразу понимают, как получить информацию о табе.
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
Ответ 7
Вы должны проверить это.
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);