omnibox.onInputChanged
Вызывается всякий раз, когда пользователь изменяет свой ввод, после того, как он начал взаимодействовать с расширением, введя его ключевое слово в адресную строку и нажав клавишу пробела.
Этот событие используется для заполнения раскрывающегося списка адресной строки предложениями. Обработчик событий получает:
- текущий пользовательский ввод (без учёта самого ключевого слова или пробела после него)
- функцию обратного вызова, которую обработчик может вызвать с массивом объектов
omnibox.SuggestResult, по одному для каждого предложения. Будут отображены только первые шесть предложений.
Синтаксис
browser.omnibox.onInputChanged.addListener(listener) browser.omnibox.onInputChanged.removeListener(listener) browser.omnibox.onInputChanged.hasListener(listener)
События имеют три функции:
addListener(listener)-
Добавляет обработчик к этому событию.
removeListener(listener)-
Прекратить прослушивание этого события. Аргумент
listener— это обработчик, который нужно удалить. hasListener(listener)-
Проверить, зарегистрирован ли
listenerдля этого события. Возвращаетtrue, если он прослушивает,falseв противном случае.
Синтаксис addListener
Функция обработчика получит два параметра: строку text, и функцию обратного вызова suggest.
Параметры
text-
String. Текущий пользовательский ввод в адресной строке, без учёта ключевого слова расширения и пробела после него. Используйте это, чтобы определить, какие предложения отобразить в раскрывающемся списке. suggest-
Function. Функция обратного вызова, которую обработчик события может вызвать для предоставления предложений для раскрывающегося списка адресной строки. Функция обратного вызова ожидает получить массив объектовomnibox.SuggestResult, по одному для каждого предложения. Будут отображены только первые шесть предложений.
Совместимость с браузером
| Рабочий стол | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
onInputChanged |
9 | 79 | 52 | ? | 15 | Нет | ? | ? | Нет | ? | Нет | ? |
Примеры
В этом примере ввод пользователя интерпретируется как имя свойства CSS, и в раскрывающийся список добавляется по одному объекту omnibox.SuggestResult для каждого свойства CSS, соответствующего вводу. Свойство description объекта SuggestResult — это полное имя свойства, а content — страница MDN для этого свойства.
Пример также прослушивает omnibox.onInputEntered и открывает страницу MDN, соответствующую выбранному элементу, в соответствии с аргументом omnibox.OnInputEnteredDisposition.
browser.omnibox.setDefaultSuggestion({ description: "Type the name of a CSS property" }); /* Very short list of a few CSS properties. */ const props = [ "animation", "background", "border", "box-shadow", "color", "display", "flex", "flex", "float", "font", "grid", "margin", "opacity", "overflow", "padding", "position", "transform", "transition" ]; const baseURL = "https://developer.mozilla.org/en-US/docs/Web/CSS/"; /* Return an array of SuggestResult objects, one for each CSS property that matches the user's input. */ function getMatchingProperties(input) { const result = []; for (const prop of props) { if (prop.startsWith(input)) { console.log(prop); const suggestion = { content: `${baseURL}${prop}`, description: prop } result.push(suggestion); } else if (result.length !== 0) { return result; } } return result; } browser.omnibox.onInputChanged.addListener((input, suggest) => { suggest(getMatchingProperties(input)); }); browser.omnibox.onInputEntered.addListener((url, disposition) => { switch (disposition) { case "currentTab": browser.tabs.update({url}); break; case "newForegroundTab": browser.tabs.create({url}); break; case "newBackgroundTab": browser.tabs.create({url, active: false}); break; } });
Примеры расширений
Примечание: Этот API основан на API chrome.omnibox Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/omnibox/onInputChanged