Estou trabalhando em um aplicativo da web para o qual estou tentando implementar um sistema de janelas completo. No momento está indo muito bem, estou encontrando apenas um pequeno problema. Às vezes, quando vou arrastar uma parte do meu aplicativo (na maioria das vezes o div do canto da janela, que deve acionar uma operação de redimensionamento), o navegador da web fica esperto e pensa que quero arrastar e soltar alguma coisa. Resultado final, minha ação é colocada em espera enquanto o navegador arrasta e solta.
Existe uma maneira fácil de desativar o recurso de arrastar e soltar do navegador? Eu gostaria de poder desligá-lo enquanto o usuário clica em certos elementos, mas reativá-lo para que os usuários ainda possam usar a funcionalidade normal de seu navegador no conteúdo de minhas janelas. Estou usando o jQuery e, embora não tenha conseguido encontrá-lo navegando na documentação, se você conhece uma solução jQuery pura, seria excelente.
Resumindo: preciso desabilitar a seleção de texto do navegador e as funções de arrastar e soltar enquanto meu usuário mantém o botão do mouse pressionado e restaurar essa funcionalidade quando o usuário libera o mouse.
fonte
Respostas:
Tente evitar o padrão no evento mousedown:
ou
fonte
:active
pseudo-classe seja aplicada ao elemento. Isso significa que não posso realmente usá-lo para meus links.Essa coisa funciona ... Experimente.
espero que ajude. obrigado
fonte
<div>
elemento.)copy paste
ouvinte, parece ser a solução perfeita para forçar um usuário a digitar a entrada em vez de colar / arrastar algo sem afetar adversamente outras partes da página.Você pode desativar o arrasto simplesmente usando o
draggable="false"
atributo.http://www.w3schools.com/tags/att_global_draggable.asp
fonte
Isso pode funcionar: você pode desativar a seleção com css3 para texto, imagem e basicamente tudo.
Claro, apenas para os navegadores mais recentes. Para mais detalhes, verifique:
Como desativar o destaque de seleção de texto usando CSS?
fonte
div
, mas com o arrasto desativado.Com jQuery será algo assim:
No meu caso, eu queria desabilitar o usuário de soltar texto nas entradas, então usei "drop" em vez de "mousedown".
Em vez disso, event.preventDefault () você pode retornar false. Aqui está a diferença.
E o código:
fonte
Este é um violino que sempre uso com meus aplicativos da Web:
Isso impedirá que qualquer coisa em seu aplicativo seja arrastada e solta. Dependendo das necessidades do tour, você pode substituir o seletor de corpo por qualquer recipiente que as crianças não devam ser arrastadas.
fonte
tente isso
fonte
Para os
input
elementos, essa resposta funciona para mim.Implementei em um componente de entrada customizado no Angular 4, mas acho que poderia ser implementado com JS puro.
HTML
Definição de componente (JS):
fonte
usando a resposta de @ SyntaxError, https://stackoverflow.com/a/13745199/5134043
Consegui fazer isso no React; a única maneira que consegui descobrir foi anexar os métodos ondragstart e ondrop a um ref, assim:
fonte
Vou apenas deixar aqui. Me ajudou depois que tentei de tudo.
fonte
Este JQuery funcionou para mim: -
fonte