Расширение Chrome перестает работать, если инструменты для обслуживания Dev не открытыJavascript

Форум по Javascript
Ответить
Anonymous
 Расширение Chrome перестает работать, если инструменты для обслуживания Dev не открыты

Сообщение 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);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... s-not-open
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»