Question

Arrière-plan

J'utilise des formulaires POST au lieu de liens avec des arguments concaténés au sein d'une application Web, afin que je puisse exercer un contrôle sur les entrées.

Malheureusement, cela signifie que les utilisateurs ne peuvent pas utiliser les raccourcis rapides connus pour ouvrir des liens dans de nouvelles fenêtres, comme un contrôle en cliquant sur un contrôle ou un clic du milieu.

Problème

J'ai ce qui semble être un moyen pratique d’utiliser jQuery pour capturer l’entrée de la souris et les diverses clés d’accord, en fonction du Spécification des événements de souris DOM W3C :

 $("span#clickspan").click( function(event) {

   buttonpress = event.button;
   ctrlpress = event.ctrlKey;

    $("#clickresult").empty();
    $("#clickresult").append("<p>Click!</p>");
    $("#clickresult").append("<p>Button # " + buttonpress + " pressed!</p>");
    if (ctrlpress) {
        $("#clickresult").append("<p>Control-click!</p>");
    }

    //form submission code would go here

    event.preventDefault();

    }
 );

Je peux capturer les clics de contrôle de cette façon (testé dans Firefox 3 et IE7), et il indique correctement (?) que les clics gauche proviennent du bouton de la souris n ° 0, mais pour une raison quelconque, ce code ne capture toujours pas le milieu -Cliquez sur la plage, et des clics avec le bouton droit de la souris permettent d’afficher le menu contextuel. Je voudrais capturer les clics du milieu, au moins.

Quelqu'un peut-il aider là-bas?

Quel "contrôle"? signifie

Le problème avec une soumission / un lien GET avec des arguments concaténés est que tout le monde peut éditer la barre d’adresse et taper n'importe quoi. Je me suis déjà inquiété pour l'authentification et la validation côté serveur. Ce n'est pas pour ça que je veux travailler avec POST.

Je ne devrais montrer aux utilisateurs que des informations utiles. Les ID de base de données internes ne le sont pas. Je ne devrais laisser les utilisateurs interagir avec l'application que de manière significative. La modification arbitraire de la barre d'adresse n'en fait pas partie.

Les gens font des fautes de frappe tout le temps. Toutefois, du point de vue du système, il n’ya pas de différence entre une faute de frappe dans la barre d’adresse et une faille dans la logique de l’application, et je préfère ne pas imposer aux utilisateurs la responsabilité de choisir celle qui vient de se produire.

Était-ce utile?

La solution

Réponse courte? Je ne peux pas le faire.

Réponse longue? événements de souris Javascript . Je ne peux toujours pas le faire.

Cela soulève la question suivante: avez-vous besoin d'utiliser POST ou voulez-vous simplement vouloir ? La seule raison pour laquelle vous auriez besoin est la longueur de la chaîne de requête. Pour ce qui est de vouloir, vous parlez de "contrôler les entrées de l'utilisateur". Qu'est-ce que cela signifie exactement?

Vous ne devez jamais vous fier au navigateur pour la validation des entrées. Vous pouvez le faire ici pour votre commodité, mais le serveur doit toujours valider les entrées.

Ou la raison est-elle esthétique (c'est-à-dire des URL plus courtes et "plus agréables")?

Vous réinventez la roue des hyperliens. J'essaie simplement de m'assurer que vous avez une très bonne raison de le faire, car c'est contre-productif et vous n'obtiendrez jamais le même support et la même compatibilité de navigation que les liens hypertexte. De plus, vous risquez simplement d’ennuyer vos utilisateurs en faisant en sorte que les choses qu’ils attendent ne fonctionnent pas. Pas bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top