У меня весело с расширением Google Chrome, и я просто хочу знать, как я могу сохранить URL-адрес текущей вкладки в переменной?
У меня весело с расширением Google Chrome, и я просто хочу знать, как я могу сохранить URL-адрес текущей вкладки в переменной?
Используйте chrome.tabs.query()
как это:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Это требует, чтобы вы запрашивали доступ к chrome.tabs
API в вашем манифесте расширения :
"permissions": [ ...
"tabs"
]
Важно отметить, что определение вашей «текущей вкладки» может отличаться в зависимости от потребностей вашего расширения.
Настройка lastFocusedWindow: true
в запросе подходит, когда вы хотите получить доступ к текущей вкладке в окне, ориентированном на пользователя (обычно это самое верхнее окно).
Настройка currentWindow: true
позволяет вам получить текущую вкладку в окне, где в данный момент выполняется код вашего расширения. Например, это может быть полезно, если ваше расширение создает новое окно / всплывающее окно (изменяет фокус), но все же хочет получить доступ к информации вкладки из окна, в котором было запущено расширение.
Я решил использовать lastFocusedWindow: true
в этом примере, потому что Google вызывает случаи, в которых currentWindow
не всегда могут присутствовать .
Вы можете дополнительно уточнить запрос табуляции, используя любое из свойств, определенных здесь: chrome.tabs.query
Предупреждение!
chrome.tabs.getSelected
является устаревшим . Пожалуйста, используйте,chrome.tabs.query
как показано в других ответах.Во-первых, вы должны установить разрешения для API в manifest.json:
И хранить URL:
источник
chrome.tabs.getSelected
не определена, я должен задать это в отдельном вопросе?chrome.tabs.getSelected
Метод устарел, правильный метод указан в этом ниже ответ .Другие ответы предполагают, что вы хотите узнать это из всплывающего или фонового скрипта.
Если вы хотите узнать текущий URL из скрипта контента , применяется стандартный способ JS:
Вы можете использовать свойства
window.location
для доступа к отдельным частям URL, таким как хост, протокол или путь.источник
window.location.host
это посмотреть, нахожусь ли я на «stackoverflow.com» или нет.match:"<all_urls>"
ситуации в разделе content_script, и Chrome не рекомендует <all_urls>.contentScript.js
а не вbackground.js
. Просто передайте все данные, отфильтрованные по URL-адресу, в сообщениеbackground.js
. Пример:let message = { type: "fetchVideoDate", id: getVideoId() };
гдеgetVideoId()
содержится исполнениеwindow.location.toString()
. В противном случае вы получите некоторыеchrome://temp_background_file.html
данные. Также обратите внимание, что иногдаmessage
называетсяrequest
.Проблема в том, что chrome.tabs.getSelected является асинхронным. Этот код ниже, как правило, не будет работать, как ожидалось. Значение 'tablink' все равно будет неопределенным, когда оно будет записано в консоль, потому что getSelected еще не вызвало обратный вызов, который сбрасывает значение:
Решение состоит в том, чтобы обернуть код, в котором вы будете использовать значение в функции и вызвать его с помощью getSelected. Таким образом, вы гарантированно всегда будете иметь установленное значение, потому что ваш код должен будет ждать предоставления значения, прежде чем оно будет выполнено.
Попробуйте что-то вроде:
источник
Привет, вот пример Google Chrome, который посылает другу по электронной почте текущий сайт. Основная идея заключается в том, что вы хотите ... в первую очередь он извлекает содержимое страницы (не интересно для вас) ... после этого он получает URL (<- хорошая часть)
Кроме того, это хороший пример рабочего кода, который я предпочитаю читать больше, чем Документы.
Можно найти здесь: Отправить эту страницу по электронной почте
источник
Это решение уже протестировано.
установить разрешения для API в manifest.json
При первой загрузке вызовите функцию. https://developer.chrome.com/extensions/tabs#event-onActivated
На функцию изменения вызова. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
функция для получения URL
источник
Для тех, кто использует
context menu api
, документы не сразу ясно, как получить информацию вкладки.https://developer.chrome.com/extensions/contextMenus
источник
Вы должны проверить это .
HTML
manifest.json
JavaScript
Приведенный ниже код сохранит все URL активного окна в объект JSON как часть нажатия кнопки.
источник