Отобразить диалоговое окно из расширения Chrome
-
22-09-2019 - |
Вопрос
Я пытаюсь отобразить модальное диалоговое окно Javascript в Chrome, когда пользователь создает закладку.Однако, после попытки Closure и SimpleModal + jQuery, я, похоже, не могу заставить появиться диалоговое окно.Это ограничение расширений в Chrome, или я делаю что-то очень неправильное?(Я все еще изучаю Javascript, так что мое непонимание этого вполне может быть причиной.)
Вот мой код, использующий Закрытие.Это действительно превращает это в функцию, так что все работает нормально.Есть какие-нибудь предложения?Спасибо!
<html>
<head>
<script src="./lib/closure-library/closure/goog/base.js"></script>
<script type="text/javascript" src="./lib/closure-library/closure/goog/deps.js"></script>
<script>goog.require('goog.ui.Dialog');</script>
<script type="text/javascript">
chrome.bookmarks.onCreated.addListener(function(id, bookmark) {
// Setup the dialog box.
var dialog1 = new goog.ui.Dialog();
dialog1.setContent('[Insert Placeholder]');
dialog1.setTitle('Title Placeholder');
// Display dialog.
dialog1.setVisible(true);
});
</script>
</head>
<body>
<!-- Do Nothing -->
</body>
</html>
Решение
Вы не можете использовать подобное диалоговое окно на фоновой странице:
справочная информация-страницы
Вы можете сделать это на странице параметров:
Параметры расширений Google Chrome
Итак, в вашем случае вы хотели бы прослушать onCreated для поиска закладок, и поскольку вы хотите создать диалоговое окно, вам нужно будет связаться с самой страницей.Таким образом, вы получаете selectedTab через :
Как только вы получите вкладку, вы сможете выполнить JavaScript:
Другие советы
Чтобы немного прояснить ответ Мохаммеда, модальный диалог closure находится на странице HTML.Вероятно, это действительно работает в вашем коде, но поскольку вы делаете это на фоновой странице, а фоновая страница не видна, вы ее не видите.Вы можете использовать методы, использующие window.open или window.оповещение с фоновой страницы, но не те, которые пытаются отобразить пользователю интерактивный HTML-код.Для этого вам нужно будет поместить содержимое во всплывающее окно или на саму страницу, как предлагает Мохаммед.