Quero adicionar um menu personalizado com o botão direito ao meu aplicativo da web. Isso pode ser feito sem o uso de bibliotecas pré-criadas? Em caso afirmativo, como exibir um menu simples com o botão direito do mouse personalizado que não usa uma biblioteca JavaScript de terceiros?
Estou buscando algo parecido com o que o Google Docs faz. Permite que os usuários cliquem com o botão direito do mouse e mostrem aos usuários seu próprio menu.
OBSERVAÇÃO: quero aprender como criar meu próprio versus usar algo que alguém já criou desde a maior parte do tempo, essas bibliotecas de terceiros estão cheias de recursos, enquanto eu só quero os recursos que eu preciso, então quero que seja completamente feito à mão por mim.
javascript
contextmenu
right-click
Usuário Registrado
fonte
fonte
Respostas:
Respondendo à sua pergunta - use o
contextmenu
evento, como abaixo:Mas você deve se perguntar se realmente deseja substituir o comportamento padrão do botão direito do mouse - isso depende do aplicativo que você está desenvolvendo.
JSFIDDLE
fonte
e.preventDefault();
. É por isso que o menu regular não é exibido. O que você pode fazer é criar alguma lógica condicional que verifique se a tecla é pressionada enquanto clica com o botão direito do mouse e depois NÃO chamae.preventDefault()
- você receberá um menu regular do navegador.Foi muito útil para mim. Para o bem de pessoas como eu, esperando o desenho do menu, coloquei aqui o código que usei para fazer o menu do botão direito:
fonte
mouseY(event)
andmouseX(event)
withpx
para fazê-lo funcionar como esperado: http://jsfiddle.net/a6w7n64o/ .test
mas não há nenhum elemento pelo ID detest
. Apenas elementos com a classe detest
.jQuery
realmente não é tão inchado com coisas extras. Não na medida em que atrasaria qualquer coisa. É muito útil e o mesmojQuery
usado nesta resposta pode ser facilmente convertido emJavaScript
comandos padrão . Pode não estar 100% alinhado com a solicitação na pergunta original, mas é definitivamente 95% alinhado com ela.Uma combinação de algumas CSS agradáveis e algumas tags html não padrão sem bibliotecas externas pode fornecer um bom resultado (JSFiddle)
HTML
Nota: a tag do menu não existe, eu estou inventando (você pode usar qualquer coisa)
CSS
O JavaScript é apenas para este exemplo, eu o removo pessoalmente para menus persistentes no Windows
Além disso, note que você pode potencialmente modificar
menu > menu{left:100%;}
amenu > menu{right:100%;}
para um menu que se expande de direita para a esquerda. Você precisaria adicionar uma margem ou algo em algum lugarfonte
De acordo com as respostas aqui e em outros 'fluxos', criei uma versão que se parece com a do Google Chrome, com transição css3. JS Fiddle
Vamos começar ansiosos, já que temos os js acima nesta página, podemos nos preocupar com o CSS e o layout. O layout que usaremos é um
<a>
elemento com um<img>
ícone impressionante de elemento ou fonte (<i class="fa fa-flag"></i>
) e um<span>
para mostrar os atalhos do teclado. Então esta é a estrutura:Vamos colocá-los em uma div e mostrar essa div com o botão direito. Vamos estilizá-los como no Google Chrome, sim?
Agora vamos adicionar o código da resposta aceita e obter os valores X e Y do cursor. Para fazer isso, usaremos
e.clientX
ee.clientY
. Como estamos usando o cliente, o menu div deve ser corrigido.E é isso aí! Basta adicionar as transições de css para entrar e sair, e pronto!
Mostrar snippet de código
fonte
Você pode tentar simplesmente bloquear o menu de contexto adicionando o seguinte à sua etiqueta corporal:
Isso bloqueará todo o acesso ao menu de contexto (não apenas com o botão direito do mouse, mas também com o teclado).
PS, você pode adicioná-lo a qualquer tag na qual deseja desativar o menu de contexto
por exemplo:
Desabilitará o menu de contexto somente nessa div específica
fonte
Testado e funciona no Opera 11.6, firefox 9.01, Internet Explorer 9 e chrome 17 Você pode conferir uma amostra de trabalho no menu javascript com botão direito
fonte
Sei que isso já foi respondido, mas passei algum tempo lutando com a segunda resposta para que o menu de contexto nativo desapareça e ele apareça onde o usuário clicou.
HTML
CSS
Javascript
Exemplo de CodePen
fonte
Tente isto
http://jsfiddle.net/AkshayBandivadekar/zakn7Lwb/14/
fonte
Solução pura de JS e CSS para um menu de contexto verdadeiramente dinâmico com clique com o botão direito do mouse, embora com base em convenções de nomenclatura predefinidas para a identificação dos elementos, links etc. jsfiddle e o código que você pode copiar e colar em uma única página estática de html:
fonte
Aqui está um tutorial muito bom sobre como criar um menu de contexto personalizado com um exemplo de código de trabalho completo (sem JQuery e outras bibliotecas).
Você também pode encontrar o código de demonstração no GitHub .
Eles fornecem uma explicação passo a passo detalhada que você pode seguir para criar seu próprio menu de contexto com o botão direito do mouse (incluindo código html, css e javascript) e resumir no final, fornecendo o código de exemplo completo.
Você pode acompanhar facilmente e adaptá-lo às suas próprias necessidades. E não há necessidade de JQuery ou outras bibliotecas.
É assim que o código de menu de exemplo se parece:
Um exemplo de trabalho (lista de tarefas) pode ser encontrado no codepen .
fonte
Você pode fazer isso com este código. visite aqui para obter um tutorial completo com detecção automática de borda http://www.voidtricks.com/custom-right-click-context-menu/
`
fonte
fonte
oncontextmenu
evento que é demitido (geralmente do botão direito)Uma maneira simples de fazer isso é usar onContextMenu para retornar uma função JavaScript:
E entrando
return false;
você cancelará o menu de contexto.Se você ainda deseja exibir o menu de contexto, basta remover a
return false;
linha.fonte
Testado e funciona no Opera 12.17, firefox 30, Internet Explorer 9 e chrome 26.0.1410.64
fonte
O que estou fazendo aqui em cima
O usuário js invoca suas próprias ações.
fonte
Você deve se lembrar de que se deseja usar a solução somente do Firefox, se deseja adicioná-lo a todo o documento, deve adicionar
contextmenu="mymenu"
à<html>
tag e não àbody
tag.Você deve prestar atenção nisso.
fonte
Você pode ajustar e modificar esse código para criar um menu de contexto mais eficiente e com melhor aparência. Quanto à modificação de um menu de contexto existente, não tenho certeza de como fazer isso ... Confira este violino para um ponto de vista organizado. Além disso, tente clicar nos itens no meu menu de contexto. Eles devem alertar algumas mensagens impressionantes. Se eles não funcionarem, tente algo mais ... complexo.
fonte
Eu uso algo semelhante ao seguinte jsfiddle
se você segmentar navegadores IE mais antigos, deverá concluí-lo com o 'attachEvent; caso
fonte