Pergunta

Fundo

Eu estou usando POST envios de formulários em vez de links com argumentos concatenados dentro de uma aplicação Web, para que eu possa exercer controle sobre entrada.

Infelizmente este usuários significa não pode usar os atalhos rápidos que eles conhecem para abrir links em novas janelas, como control-clique ou clicar com o botão do meio.

Problema

Eu tenho o que parece ser uma forma viável para usar jQuery para a entrada do mouse captura e as várias teclas de acordes, com base no eventos W3C DOM rato especificação :

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

    }
 );

Eu posso capturar controle clica desta forma (testado no Firefox 3 e IE7), e corretamente (?) Relata cliques esquerda como vindo de botão do mouse # 0, mas por algum motivo este código ainda não está capturando meio -clicks sobre a extensão e cliques de direitos ainda aparecer o menu de contexto. Eu gostaria de capturar meio-cliques, pelo menos.

Pode alguém ajuda lá?

O "controle" significa

O problema com uma submissão GET / link com argumentos concatenados é que qualquer pessoa pode editar a barra de endereços e digite qualquer coisa. Eu já preocupado com autenticação e do lado do servidor de validação. Isso não é por isso que eu quero trabalhar com POST.

Eu só deve ser mostrar aos usuários informação que é significativa. IDs de banco de dados internos não são. Eu só deve ser permitir que os usuários interajam com o aplicativo de maneira significativa. Arbitrariamente edição da barra de endereços não é um desses.

As pessoas fazem erros o tempo todo. Do ponto de vista do sistema, porém, não há nenhuma diferença entre um erro de digitação na barra de endereços e uma falha na lógica da aplicação, e eu prefiro não empurrar a responsabilidade para decidir qual só aconteceu off para os usuários.

Foi útil?

Solução

curta resposta? não pode fazê-lo.

Long resposta? Javascript rato . Ainda não é possível fazê-lo.

Isso levanta a questão: você necessidade usar POST ou você simplesmente deseja para? A única razão por que você precisa é de comprimento string de consulta. Como a querer, você menciona "controlar a entrada do usuário". O que isso significa exatamente?

Você deve nunca, nunca confiar no navegador para validação de entrada. Você pode fazê-lo lá como uma conveniência, mas o servidor deve introduzir sempre validar.

Ou é a estética razão (ou seja, mais curto, "Buscamos" URLs)?

Você está reinventando a roda que é hyperlinks. Eu só estou tentando fazer se você tem um bom motivo danado bastante para fazê-lo, porque isso é contraproducente e você nunca vai conseguir o mesmo suporte ao navegador e compatibilidade como hiperlinks real. Além disso, é provável que você simplesmente irritar seus usuários por ter coisas que eles esperam para o trabalho não trabalho. Não é bom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top