Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Adressleisten-Vorschläge

Mit der omnibox API können Erweiterungen die Vorschläge im Dropdown der Adressleiste des Browsers anpassen, wenn der Benutzer ein Schlüsselwort eingibt.

Beispiel, das das Ergebnis der Anpassung der Adressleisten-Vorschläge durch das WebExtension firefox_code_search zeigt.

Dies ermöglicht es Ihrer Erweiterung beispielsweise, in einer Bibliothek kostenloser E-Books zu suchen oder, wie im obigen Beispiel, ein Repository von Codebeispielen zu durchsuchen.

Spezifizierung der Omnibox-Anpassung

Sie teilen Ihrer Erweiterung mit, dass sie die Vorschläge der Adressleiste anpassen wird, indem Sie den omnibox-Schlüssel und die Definition des Auslöser-Schlüsselworts in ihrer manifest.json-Datei einfügen:

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

In der JavaScript-Datei der Hintergrundseite der Erweiterung können Sie mit omnibox.setDefaultSuggestion() optional den ersten Vorschlag definieren, der im Dropdown der Adressleiste angezeigt wird. Verwenden Sie dies, um einen Hinweis darauf zu geben, wie die Funktion verwendet wird:

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

Sie können dann den Code hinzufügen, um den benutzerdefinierten Inhalt bereitzustellen, indem Sie auf omnibox.onInputStarted lauschen, welches ausgelöst wird, wenn der Benutzer das Schlüsselwort und ein Leerzeichen eingegeben hat, und auf omnibox.onInputChanged lauschen, welches ausgelöst wird, wann immer der Benutzer den Eintrag in der Adressleiste aktualisiert. Sie können dann die Vorschläge befüllen, in diesem Fall eine Suche von mozilla-central mit dem vom Benutzer eingegebenen Begriff erstellen:

js
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);
});

Wenn die Erweiterung einen Standardvorschlag mit omnibox.setDefaultSuggestion() gesetzt hat, wird dieser zuerst im Dropdown angezeigt.

Die Erweiterung kann dann darauf lauschen, dass der Benutzer auf einen der Vorschläge klickt, mit omnibox.onInputEntered. Wird der Standardvorschlag angeklickt, wird der benutzerdefinierte Begriff des Nutzers zurückgegeben, andernfalls wird der Zeichenfolgevorschlag zurückgegeben. Dies gibt auch Informationen zu den Browser-Einstellungen des Benutzers zur Handhabung neuer Links weiter. Im folgenden Code wird der benutzerdefinierte Begriff des Nutzers zu einer Suche verwendet, andernfalls wird die vorgeschlagene URL geöffnet:

js
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;
  }
});

Beispiele

Das webextensions-examples Repository auf GitHub enthält das firefox-code-search Beispiel, welches die Suchleiste anpasst.