omnibox.onInputEntered
Wird ausgelöst, wenn der Benutzer einen der Vorschläge ausgewählt hat, die Ihre Erweiterung der Dropdown-Liste der Adressleiste hinzugefügt hat.
Verwenden Sie dieses Ereignis, um die Auswahl des Benutzers zu verarbeiten, in der Regel indem Sie die entsprechende Seite öffnen. An den Event-Listener werden folgende Werte übergeben:
- die Auswahl des Benutzers
- ein
omnibox.OnInputEnteredDisposition: Bestimmen Sie damit, ob die neue Seite im aktuellen Tab, in einem neuen Tab im Vordergrund oder in einem neuen Tab im Hintergrund geöffnet werden soll.
Wenn die Erweiterung über die Berechtigung activeTab verfügt, ist die Auswahl eines Vorschlags eine Benutzeraktion, die ihr vorübergehend Zugriff auf den aktiven Tab gewährt (in Firefox ab Version 142).
Syntax
browser.omnibox.onInputEntered.addListener(listener)
browser.omnibox.onInputEntered.removeListener(listener)
browser.omnibox.onInputEntered.hasListener(listener)
Ereignisse haben drei Funktionen:
addListener(listener)-
Fügt diesem Ereignis einen Listener hinzu.
removeListener(listener)-
Entfernt den Listener für dieses Ereignis. Das Argument
listenerbezeichnet den zu entfernenden Listener. hasListener(listener)-
Prüft, ob
listenerfür dieses Ereignis registriert ist. Gibttruezurück, wenn der Listener registriert ist, andernfallsfalse.
Syntax von addListener
Der Listener-Funktion werden zwei Parameter übergeben: ein String text und ein omnibox.OnInputEnteredDisposition.
Parameter
text-
String. Der Wert der Eigenschaftcontentdes vom Benutzer ausgewähltenomnibox.SuggestResult-Objekts. disposition-
OnInputEnteredDisposition. Eineomnibox.OnInputEnteredDisposition-Enumeration, die angibt, ob die Erweiterung die Seite im aktuellen Tab, in einem neuen Tab im Vordergrund oder in einem neuen Tab im Hintergrund öffnen soll.
Beispiele
Dieses Beispiel interpretiert die Eingabe des Benutzers als Namen einer CSS-Eigenschaft und füllt die Dropdown-Liste mit einem omnibox.SuggestResult-Objekt für jede CSS-Eigenschaft, die der Eingabe entspricht. Die Eigenschaft description von SuggestResult enthält den vollständigen Namen der Eigenschaft, und content enthält die MDN-Seite für diese Eigenschaft.
Das Beispiel überwacht außerdem omnibox.onInputEntered und öffnet die MDN-Seite, die der Auswahl entspricht, gemäß dem Argument 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;
}
});
Beispielerweiterungen
Browser-Kompatibilität
Hinweis:
Diese API basiert auf der chrome.omnibox-API von Chromium.