menus.refresh()

Refreshes a menu that's being shown.

Updates the extension's menu items in the menu that the browser is currently showing, including changes that have been made since the menu was shown. Has no effect if the menu is not being shown. Rebuilding a shown menu is an expensive operation, only invoke this method when necessary.

This would typically be called from inside a menus.onShown event handler, after the handler has made any updates to the menu.

Firefox makes this function available via the contextMenus namespace as well as the menus namespace.

This is an asynchronous function that returns a Promise.

Syntax

browser.menus.refresh()

Parameters

None.

Return value

A Promise that is fulfilled with no arguments.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaFirefox for Android
Basic supportChrome No support NoEdge No support NoFirefox Full support 60
Full support 60
Full support 60
Alternate Name
Alternate Name Uses the non-standard name: contextMenus.refresh
Opera No support NoFirefox Android No support No

Legend

Full support  
Full support
No support  
No support
Uses a non-standard name.
Uses a non-standard name.

Examples

This example listens for the context menu to be shown over a link, then updates the openLabelledId menu item with the link's hostname:

function updateMenuItem(linkHostname) {
  browser.menus.update(openLabelledId, {
    title: `Open (${linkHostname})`
  });
  browser.menus.refresh();
}

browser.menus.onShown.addListener(info => {
  if (!info.linkUrl) {
    return;
  }
  let linkElement = document.createElement("a");
  linkElement.href = info.linkUrl;
  updateMenuItem(linkElement.hostname);
});

Example extensions

Document Tags and Contributors

Contributors to this page: hellosct1, wbamberg
Last updated by: hellosct1,