Spec-Zone.ru › Web Extensions

Предложения адресной строки

Используя API omnibox, расширения могут настраивать предложения, отображаемые в раскрывающемся списке адресной строки браузера, когда пользователь вводит ключевое слово.

Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.

Это позволяет вашему расширению, например, искать библиотеку бесплатных электронных книг или, как в примере выше, репозиторий примеров кода.

Настройка предложения omnibox

Вы сообщаете своему расширению, что оно будет настраивать предложения адресной строки, включив ключ omnibox и определение ключевого слова-триггера в файле manifest.json:

  "omnibox": { "keyword" : "cs" }

В файле JavaScript расширения, используя omnibox.setDefaultSuggestion(), вы можете необязательно определить первое предложение, отображаемое в раскрывающемся списке адресной строки. Используйте это, чтобы дать подсказку о том, как использовать эту функцию:

browser.omnibox.setDefaultSuggestion({
  description: `Search the Firefox codebase
    (e.g. "hello world" | "path:omnibox.js onInputChanged")`
});

Затем вы можете добавить код для предоставления настраиваемого содержимого, прослушивая omnibox.onInputStarted, который отправляется, когда пользователь ввёл ключевое слово и пробел, и omnibox.onInputChanged, который отправляется всякий раз, когда пользователь обновляет запись в адресной строке. Затем вы можете заполнить предложения, в данном случае выполнив поиск в mozilla-central с использованием введённого пользователем термина:

browser.omnibox.onInputChanged.addListener((text, addSuggestions) => {
  let headers = new Headers({"Accept": "application/json"});
  let init = {method: 'GET', headers};
  let url = buildSearchURL(text);
  let request = new Request(url, init);

  fetch(request)
    .then(createSuggestionsFromResponse)
    .then(addSuggestions);
});

Если расширение задало значение по умолчанию, используя omnibox.setDefaultSuggestion(), то оно будет отображаться первым в раскрывающемся списке.

Затем расширение может прослушивать щелчок пользователя по одному из предложений, используя omnibox.onInputEntered. Если нажато предложение по умолчанию, возвращается пользовательский термин, в противном случае возвращается строка предложения. Это также передаёт информацию о настройках браузера пользователя для обработки новых ссылок. В приведенном ниже коде для создания поиска используется пользовательский термин, в противном случае открывается предложенный URL:

browser.omnibox.onInputEntered.addListener((text, disposition) => {
  let url = text;
  if (!text.startsWith(SOURCE_URL)) {
    // Update the URL if the user clicks on the default suggestion.
    url = `${SEARCH_URL}?q=${text}`;
  }
  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;
  }
});

Примеры

Репозиторий webextensions-examples на GitHub содержит пример firefox-code-search, который настраивает строку поиска.

© 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/user_interface/Omnibox

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API