Как я могу получить URL-адрес текущей вкладки из расширения Google Chrome?
Я получаю удовольствие от расширения Google Chrome, и я просто хочу знать, как я могу хранить URL текущей вкладки в переменной?
7 ответов:
обновление: The
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
не всегда может присутствовать.вы можете дополнительно уточнить запрос вкладки, используя любое из свойств, определенных здесь:хром.вешалки.запрос
друг отвечает на мой вопрос.
во-первых, вы должны установить разрешения для вкладки API :
"permissions": [ "tabs" ]
и хранить URL:
chrome.tabs.getSelected(null,function(tab) { var tablink = tab.url; });
проблема в том, что хром.вешалки.getSelected является асинхронным. Этот код ниже, как правило, не работает должным образом. Значение 'tablink' по-прежнему будет неопределенным, когда оно будет записано в консоль, потому что 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); }
другие ответы предполагают, что вы хотите узнать это из всплывающего или фонового сценария.
в случае, если вы хотите знать текущий URL из скрипта контент, стандартный путь JS применяется:
window.location.toString()
Вы можете использовать свойства
window.location
для доступа к отдельным частям URL, таким как хост, протокол или путь.
привет вот пример Google Chrome, который отправляет текущий сайт другу. Основная идея заключается в том, что вы хотите...прежде всего он извлекает содержимое страницы (не интересно для вас)...после этого он получает URL (
кроме того, это хороший пример рабочего кода, который я предпочитаю motstly над чтением документов.
можно найти здесь: отправить эту страницу
для тех, кто использует
context menu api
, документы не сразу понятно, как получить информацию о вкладке.chrome.contextMenus.onClicked.addListener(function(info, tab) { console.log(info); return console.log(tab); });
вы должны проверить этой.
HTML
<button id="saveActionId"> Save </button>
манифест.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);