Je travaille sur une application Web pour laquelle j'essaye d'implémenter un système de fenêtrage complet. En ce moment, ça se passe très bien, je ne rencontre qu'un seul problème mineur. Parfois, lorsque je vais faire glisser une partie de mon application (le plus souvent le coin div de ma fenêtre, qui est censé déclencher une opération de redimensionnement), le navigateur Web devient intelligent et pense que je veux faire glisser et déposer quelque chose. Résultat final, mon action est mise en attente pendant que le navigateur fait son glisser-déposer.
Existe-t-il un moyen simple de désactiver le glisser-déposer du navigateur? J'aimerais idéalement pouvoir le désactiver pendant que l'utilisateur clique sur certains éléments, mais le réactiver afin que les utilisateurs puissent toujours utiliser la fonctionnalité normale de leur navigateur sur le contenu de mes fenêtres. J'utilise jQuery, et même si je n'ai pas pu le trouver en parcourant la documentation, si vous connaissez une solution jQuery pure, ce serait excellent.
En bref: je dois désactiver la sélection de texte du navigateur et les fonctions de glisser-déposer lorsque mon utilisateur a le bouton de la souris enfoncé, et restaurer cette fonctionnalité lorsque l'utilisateur relâche la souris.
la source
Réponses:
Essayez d'empêcher l'événement par défaut sur mousedown:
ou
la source
:active
pseudo-classe d'être appliquée à l'élément. Cela signifie que je ne peux pas vraiment l'utiliser pour mes liens.Cette chose fonctionne ..... Essayez-le.
J'espère que ça aide. Merci
la source
<div>
élément.)copy paste
auditeur, semble être la solution parfaite pour forcer un utilisateur à taper l'entrée plutôt que de coller / glisser quelque chose sans affecter les autres parties de la page.Vous pouvez désactiver le glissement simplement en utilisant l'
draggable="false"
attribut.http://www.w3schools.com/tags/att_global_draggable.asp
la source
Cela pourrait fonctionner: vous pouvez désactiver la sélection avec css3 pour le texte, l'image et essentiellement tout.
Bien sûr uniquement pour les nouveaux navigateurs. Pour plus de détails, consultez:
Comment désactiver la mise en évidence de la sélection de texte à l'aide de CSS?
la source
div
, mais avec le glisser désactivé.Avec jQuery, ce sera quelque chose comme ça:
Dans mon cas, je voulais désactiver l'utilisateur de déposer du texte dans les entrées, j'ai donc utilisé "drop" au lieu de "mousedown".
Au lieu de cela, event.preventDefault () vous pouvez retourner false. Voici la différence.
Et le code:
la source
C'est un violon que j'utilise toujours avec mes applications Web:
Cela empêchera tout élément de votre application d'être glissé et déposé. En fonction des besoins de la visite, vous pouvez remplacer le sélecteur de corps par n'importe quel conteneur que les enfants ne doivent pas faire glisser.
la source
essaye ça
la source
Pour les
input
éléments, cette réponse fonctionne pour moi.Je l'ai implémenté sur un composant d'entrée personnalisé dans Angular 4, mais je pense qu'il pourrait être implémenté avec du JS pur.
HTML
Définition des composants (JS):
la source
en utilisant la réponse de @ SyntaxError, https://stackoverflow.com/a/13745199/5134043
J'ai réussi à faire cela dans React; la seule façon dont je pouvais comprendre était d'attacher les méthodes ondragstart et ondrop à une référence, comme ceci:
la source
Je vais juste le laisser ici. M'a aidé après avoir tout essayé.
la source
Ce JQuery a fonctionné pour moi: -
la source