Como desativar o botão direito em determinados sites

1

Não estou fazendo essa pergunta de um desenvolvedor da Web, mas de um usuário final.

Estou usando vários sites (google drive, evernote e assim por diante) que possuem um menu de contexto que é ativado em um evento de clique direito. No entanto, no meu navegador (Firefox), se eu clicar com o botão direito, ele abre o menu de contexto do meu navegador na parte superior do menu de contexto implementado pelo (s) desenvolvedor (es) da Web do site. Se eu clicar com o botão direito uma segunda vez, o menu de contexto do navegador desaparecerá, deixando espaço para o menu de contexto do aplicativo da Web.

Como posso, como usuário final, desativar cliques diretos em websites específicos? E, se possível, eu gostaria de ter essa possibilidade "sob demanda", ou seja, ser capaz de reativar cliques certos quando quiser.

Existe um addon existente ou um truque javascript em algum lugar para isso? E se não, que direção devo seguir para codificar algo assim?

    
por Marc-Olivier Titeux 17.10.2012 / 09:42

2 respostas

2

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!

    
por 17.10.2012 / 10:22
0

Vá para a guia Conteúdo em Ferramentas > Opções Clique no botão Avançado ... ao lado da caixa de seleção Ativar JavaScript . Isso abre a caixa de diálogo Configurações avançadas de JavaScript. Alterne a opção da caixa de seleção Desabilitar ou substituir menus de contexto na lista apresentada.

    
por 27.10.2012 / 20:01