Domanda

Sfondo

Uso invii di moduli POST anziché collegamenti con argomenti concatenati all'interno di un'applicazione Web, in modo da poter esercitare il controllo sull'input.

Sfortunatamente questo significa che gli utenti non possono usare le scorciatoie veloci che conoscono per aprire i collegamenti in nuove finestre, come il controllo-clic o il clic centrale.

Problema

Ho quello che sembra essere un modo fattibile per usare jQuery per catturare l'input del mouse e le varie chiavi di accordo, basato su Specifica degli eventi del mouse W3C DOM :

 $("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();

    }
 );

Posso catturare i clic di controllo in questo modo (testato in Firefox 3 e IE7), e riporta correttamente (?) i clic di sinistra come provenienti dal pulsante del mouse # 0, ma per qualche motivo questo codice non viene ancora catturato nel mezzo -clic sull'intervallo e clic con il pulsante destro del mouse ancora fanno apparire il menu contestuale. Vorrei catturare i clic intermedi, almeno.

Qualcuno può aiutare lì?

Cosa " control " mezzi

Il problema con un invio / collegamento GET con argomenti concatenati è che chiunque può modificare la barra degli indirizzi e digitare qualsiasi cosa. Sono già preoccupato per l'autenticazione e la convalida lato server. Non è per questo che voglio lavorare con POST.

Dovrei solo mostrare agli utenti informazioni utili. Gli ID del database interno non lo sono. Dovrei solo consentire agli utenti di interagire con l'applicazione in modo significativo. La modifica arbitraria della barra degli indirizzi non è una di queste.

Le persone fanno continuamente errori di battitura. Dal punto di vista del sistema, tuttavia, non c'è alcuna differenza tra un errore di battitura nella barra degli indirizzi e un difetto nella logica dell'applicazione, e preferirei non spingere la responsabilità di decidere quale è appena successo agli utenti.

È stato utile?

Soluzione

Risposta breve? Non posso farlo.

Risposta lunga? Eventi del mouse Javascript . Non riesco ancora a farlo.

Questo pone la domanda: hai bisogno di per usare il POST o semplicemente vuoi ? L'unico motivo per cui è necessario è la lunghezza della stringa di query. Per quanto riguarda il volere, menzioni "controllo dell'input dell'utente". Cosa significa esattamente?

Non dovresti mai fare affidamento sul browser per la convalida dell'input. Puoi farlo lì per comodità, ma il server dovrebbe sempre convalidare l'input.

O è la ragione estetica (ovvero URL più brevi, "più belli")?

Stai reinventando la ruota che è hyperlink. Sto solo cercando di assicurarmi di avere una buona ragione per farlo perché è controproducente e non otterrai mai lo stesso supporto e compatibilità con il browser dei collegamenti ipertestuali reali. Inoltre, potresti semplicemente infastidire i tuoi utenti perché le cose che si aspettano che funzionino non funzionano. Non va bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top