Сотрудник создал расширение Chrome, используя JavaScript с функциональностью, чтобы привлечь сотрудников к различным инструментам/страницам, которые мы используем, когда префикс и некоторый текст введены в Omnibar или выделены, и опция выбирается из контекстного меню. Я решил преобразовать код в TypeScript. Сценарий сборки использовал WebPack для конвертации TypeScript в JavaScript. Все, что работает нормально. < /P>
Расширение работает нормально, когда вы используете его один или два раза, введя текст в Omnibar или выделив текст и выберет опцию из контекстного меню, но в конечном итоге он перестает работать. Когда вы предпринимаете действие, которое должно перенести вас на страницу на новой вкладке, ничего не происходит. Странно то, что если у вас открыт окно Dev Tools, когда вы нажимаете на ссылку на служебный работник для расширения, расширение никогда не перестает работать. Я предположил, что была некоторая ошибка, и она будет зарегистрирована в консоли, но это не так. Я думал, что, может быть, открытые инструменты разработки вызывали проглоту ошибку, поэтому я положил кучу Try {...} Catch (e) {console.error (e); } на протяжении всего кода, но ничего не регистрировано.
Суть кода:
background.ts
const omniboxHandler = new OmniboxHandler();
const contextMenu = new ContextMenu();
try {
chrome.runtime.onInstalled.addListener(async () => {
omniboxHandler.addListener();
contextMenu.createContextMenu();
});
} catch (e) {
console.log('***', e);
}
< /code>
omnibox-handler.ts
export class OmniboxHandler {
public addListener() {
chrome.omnibox.onInputEntered.addListener(this.handleInputEntered);
}
private handleInputEntered(searchString: string) {
try {
for (const command of COMMANDS) {
console.log('Checking command:', JSON.stringify(command.constructor, null, 2), searchString);
if (command.processSearchString(searchString)) {
console.log(`Omnibox command executed:`, JSON.stringify(command, null, 2), searchString);
break;
}
}
} catch (e) {
console.error('Error in omnibox input handler', e);
}
}
}
< /code>
context-menu.ts
export class ContextMenu {
public createContextMenu(): void {
chrome.contextMenus.create({
title: 'Go to "%s"',
id: CONTEXT_MENU_ID,
contexts: [ContextType.SELECTION]
} as CreateProperties);
chrome.contextMenus.onClicked.addListener(this.searchText);
}
private async searchText(info: OnClickData) {
try {
const searchString = info.selectionText;
console.log(`Searching ${searchString}`);
// A bunch of if elses that open a new tab to a url based on the search string
} catch (e) {
console.error('Error in context menu click handler', e);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-not-open
Расширение Chrome перестает работать, если инструменты для обслуживания Dev не открыты ⇐ Javascript
Форум по Javascript
1757703661
Anonymous
Сотрудник создал расширение Chrome, используя JavaScript с функциональностью, чтобы привлечь сотрудников к различным инструментам/страницам, которые мы используем, когда префикс и некоторый текст введены в Omnibar или выделены, и опция выбирается из контекстного меню. Я решил преобразовать код в TypeScript. Сценарий сборки использовал WebPack для конвертации TypeScript в JavaScript. Все, что работает нормально. < /P>
Расширение работает нормально, когда вы используете его один или два раза, введя текст в Omnibar или выделив текст и выберет опцию из контекстного меню, но в конечном итоге он перестает работать. Когда вы предпринимаете действие, которое должно перенести вас на страницу на новой вкладке, ничего не происходит. Странно то, что если у вас открыт окно Dev Tools, когда вы нажимаете на ссылку на служебный работник для расширения, расширение никогда не перестает работать. Я предположил, что была некоторая ошибка, и она будет зарегистрирована в консоли, но это не так. Я думал, что, может быть, открытые инструменты разработки вызывали проглоту ошибку, поэтому я положил кучу Try {...} Catch (e) {console.error (e); } на протяжении всего кода, но ничего не регистрировано.
Суть кода:
background.ts
const omniboxHandler = new OmniboxHandler();
const contextMenu = new ContextMenu();
try {
chrome.runtime.onInstalled.addListener(async () => {
omniboxHandler.addListener();
contextMenu.createContextMenu();
});
} catch (e) {
console.log('***', e);
}
< /code>
omnibox-handler.ts
export class OmniboxHandler {
public addListener() {
chrome.omnibox.onInputEntered.addListener(this.handleInputEntered);
}
private handleInputEntered(searchString: string) {
try {
for (const command of COMMANDS) {
console.log('Checking command:', JSON.stringify(command.constructor, null, 2), searchString);
if (command.processSearchString(searchString)) {
console.log(`Omnibox command executed:`, JSON.stringify(command, null, 2), searchString);
break;
}
}
} catch (e) {
console.error('Error in omnibox input handler', e);
}
}
}
< /code>
context-menu.ts
export class ContextMenu {
public createContextMenu(): void {
chrome.contextMenus.create({
title: 'Go to "%s"',
id: CONTEXT_MENU_ID,
contexts: [ContextType.SELECTION]
} as CreateProperties);
chrome.contextMenus.onClicked.addListener(this.searchText);
}
private async searchText(info: OnClickData) {
try {
const searchString = info.selectionText;
console.log(`Searching ${searchString}`);
// A bunch of if elses that open a new tab to a url based on the search string
} catch (e) {
console.error('Error in context menu click handler', e);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79763273/chrome-extension-stops-working-if-service-work-dev-tools-is-not-open[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия