Как перенаправить URL текущей вкладки в расширение Chrome?
Я пишу расширение Chrome, используемое для переключения между различными поисковыми системами. manifest.json
похоже:
{
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"activeTab"
],
"content_security_policy": "script-src 'self'; object-src 'self'",
"content_scripts": [{
"matches": ["*://*.baidu.com/*"],
"js": ["content.js"]
}]
}
content.js
используется для получения ключевых слов пользователя при поиске.popup.html
содержит список поддерживаемых поисковых систем.
Когда пользователь нажимает на значок поисковой системы во всплывающем окне, мне нужно перенаправить текущую вкладку на новый URL-адрес с помощью выбранного пользователя поисковой системы.
Теперь я могу получить ключевое слово. Проблема: Как перенаправить текущую вкладку на новый URL?
2 ответа
Есть 2 возможных подхода:
A. Пусть всплывающее окно обрабатывает перенаправление.
Б. Пусть скрипт содержимого обрабатывает перенаправление.
В обоих случаях вам необходимо решить 2 задачи:
Передача информации между двумя. При подходе А вам нужно получить ключевые слова из скрипта контента. При подходе B вы должны указать скрипту контента, на какой движок перейти.
Оба решаются с помощью обмена сообщениями. Я рекомендую отправлять сообщения из всплывающего окна в скрипт контента, используя
chrome.tabs.sendMessage
(и отвечает в подходе A), потому что в другом направлении контентный скрипт не знает, когда отправить сообщение (всплывающее окно может быть закрыто).На самом деле вызвать изменения. В подходе А
chrome.tabs.update
делает трюк. В подходе B контентный скрипт может изменитьсяwindow.location
уйти прочь
Увидеть chrome.tabs.update
Вы можете обновить URL текущей вкладки с помощью следующего кода
chrome.tabs.update({url: "http://www.baidu.com"});
Учитывая, что вы получаете ключевое слово из скрипта контента и хотите перенаправить URL после того, как пользователь нажимает какую-либо кнопку на всплывающей странице, вам может понадобиться передача сообщений или chrome.storage, чтобы разделить ключевые слова между скриптом контента и всплывающей страницей.