фонКак определить, включено ли расширение расширения Chrome из сценария содержимого?
У меня есть расширение Chrome с действием браузера для запуска index.html
в новой вкладке.
Я хотел бы обновить расширение, чтобы открыть index.html
в popup, а затем включить кнопку, которую пользователи могут щелкнуть, чтобы открыть приложение на новой вкладке.
Я не хочу, чтобы эта кнопка отображалась, когда это не всплывающее окно (поскольку это не имеет смысла), что означает, что скрипт контента должен знать, является ли это всплывающим окном, чтобы показать кнопку.
Вопросы
Это две части вопроса:
- Как расширение всплывающее окно Chrome знаю, что это всплывающее окно?
- Как передать эту информацию скрипту контента перед отображением всплывающего окна?
То, что я пытался
Я пытался использовать chrome.extension.getViews
в background.js
, во-первых определить, если всплывающее окно открыто. Затем я отправляю сообщение на скрипт контента, который затем показывает кнопку. Однако я не получил его на работу - views
всегда пустой массив, и сообщение, похоже, никогда не будет получено скриптом содержимого.
Вот соответствующие части моего manifest.json
файла:
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": {
"19": "img/icon19.png",
"38": "img/icon38.png"
},
"default_title": "Super Simple Tasks",
"default_popup": "index.html"
}
И вот что я пытался в моем background.js
:
// Get all popups
var views = chrome.extension.getViews({ type: "popup" });
// Send a message if there is a popup
if (views.length > 0){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {action: "popup_open"}, function(response) {});
});
};
И тогда в моем сценарии содержания, я слушаю для сообщение, а затем добавить класс к телу:
// Listen for the message
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action === 'popup_open') {
// My code here to show the button
}
});
привет, является ли index.html всплывающее окно для вашего кода? Я думаю, что это будет всплывающее окно вместо новой вкладки. И если вы хотите просто не показывать кнопку на новой вкладке, вы можете просто добавить параметр url, например «? Ispopup = false» в ссылке, которую вы открываете для новой вкладки, когда нажимаете кнопку. – Surely
Ах спасибо, мой друг сказал то же самое - подход параметра URL работает хорошо. Я добавил это как ответ! –
Просто включите его как параметр url во всплывающее окно –