Как получить URL текущей вкладки из расширения Google Chrome?
мне весело с расширением Google Chrome, и я просто хочу знать, как я могу сохранить URL текущей вкладки в переменной?
7 ответов
обновление: на 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.вешалки.запрос
друг отвечает на мой вопрос.
во-первых, вы должны установить разрешения для вкладки API:
"permissions": [
"tabs"
]
и сохранить URL:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
проблема в том, что chrome.вешалки.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);