Não estou ciente de nenhuma extensão para conseguir isso, mas criar uma não seria difícil. Você pode usar o Add-on SDK , mais fácil de ser usado via Add-on Builder, que é um aplicação web para criar extensões baseadas em SDK. Os módulos de SDK de alto nível não oferecem acesso direto à janela do navegador, mas é necessário usar o módulo window-utils
em grande parte não documentado para isso. O código a seguir em main.js
funciona:
var icons = {
"enabled": "http://www.mozilla.org/favicon.ico",
"disabled": "http://www.mozilla.org/media/img/favicon.ico"
};
function disableContextMenu(event)
{
event.preventDefault();
}
require("widget").Widget({
id: "disable-context-menu",
label: "Disable Context Menu",
contentURL: icons.enabled,
onClick: function(view)
{
var window = require("window-utils").activeBrowserWindow;
var menu = window.document.getElementById("contentAreaContextMenu");
if (this.contentURL == icons.enabled)
{
menu.addEventListener("popupshowing", disableContextMenu, false);
this.contentURL = icons.disabled;
}
else
{
menu.removeEventListener("popupshowing", disableContextMenu, false);
this.contentURL = icons.enabled;
}
}
});
É realmente tão simples quanto isso - adicionar esse manipulador de eventos ao menu de contexto desativa-o, removendo esse manipulador de eventos e ligando-o novamente. A extensão também alterna os ícones para indicar seu estado. É isso aí. Claro, se você quiser manter o estado por aba, precisará de uma lógica mais elaborada. Boa sorte!