Все дело в функции openImagesPage. Скорее всего новая вкладка активируется раньше, чем ей отправляется сообщение. Попробуйте увеличить таймаут, сделайте его, например 500 миллисекунд, а не 100.
Кроме того, в последних версиях Chrome API, свойство "selected" для функции chrome.tabs.create стало deprecated, и рекомендуется использовать "active" вместо него.
Я эти два момента исправил в статье. Вот последняя версия openImagesPage:
function openImagesPage(urls) {
// Создать новую вкладку браузера с HTML-страницей интерфейса
chrome.tabs.create({"url": "page.html",active:false},(tab) => {
setTimeout(()=>{
// отправить список URL в новую вкладку
chrome.tabs.sendMessage(tab.id, urls, (resp) => {
// сделать вкладку активной
chrome.tabs.update(tab.id, {active: true});
})
},500)
});
}
Расширение, запускаемое в браузере или публикуемое в Chrome Store должно содержать только Javascript, поэтому Typescript нужно сначала компилировать в JavaScript. Соответственно, в manifest.json и в HTML-страницах расширения указываются js-файлы. Это так же, как создавать обычное web-приложение на Typescript: пишите .ts, -> компилируете в .js -> запускаете в браузере.
Есть шаблон расширения браузера на TypeScript, автоматизирующий эту сборку:
Эта статья для совсем начинающих и прочитав только ее, такое расширение вы врядле сразу напишите. Однако идея интересная. Возможно сделаю статью о создании расширения такого типа в дальнейшем.
Также будет замечательно если вы что-нибудь напишите, когда добъетесь результатов.
Все дело в функции openImagesPage. Скорее всего новая вкладка активируется раньше, чем ей отправляется сообщение. Попробуйте увеличить таймаут, сделайте его, например 500 миллисекунд, а не 100.
Кроме того, в последних версиях Chrome API, свойство "selected" для функции chrome.tabs.create стало deprecated, и рекомендуется использовать "active" вместо него.
Я эти два момента исправил в статье. Вот последняя версия openImagesPage:
Да действительно, пропустил этот блок. Теперь исправлено. Спасибо за замечание.
Отличный интерфейс! Жаль что не могу попробовать, я линуксоид и у меня нет Windows года с 2000-го.
Будет классно если сделаете версию на JavaScript и выложите куда-нибудь.
Я когда-то тоже крестики-нолики написал: https://games.germanov.dev/tictactoe/
Спасибо, исправил.
Расширение, запускаемое в браузере или публикуемое в Chrome Store должно содержать только Javascript, поэтому Typescript нужно сначала компилировать в JavaScript. Соответственно, в manifest.json и в HTML-страницах расширения указываются js-файлы. Это так же, как создавать обычное web-приложение на Typescript: пишите .ts, -> компилируете в .js -> запускаете в браузере.
Есть шаблон расширения браузера на TypeScript, автоматизирующий эту сборку:
https://github.com/chibat/chrome-extension-typescript-starter
Да можно, как в обычном web-приложении. Добавляйте их в главную html-страницу расширения, например так: <script src="jquery.min.js"></script>.
Спасибо!
Эта статья для совсем начинающих и прочитав только ее, такое расширение вы врядле сразу напишите. Однако идея интересная. Возможно сделаю статью о создании расширения такого типа в дальнейшем.
Также будет замечательно если вы что-нибудь напишите, когда добъетесь результатов.
Ок, убрал "постоянно работает в фоне", спасибо за уточнение.
Я использую Wordtune https://www.wordtune.com/ вместо Grammarly, но узнал здесь другие варианты, тоже попробую, сравню.