使用JQuery捕获DOM中的鼠标点击?

Gla*_*ius 2 javascript mouse jquery dom

背景

我正在使用POST表单提交而不是Web应用程序中带有连接参数的链接,因此我可以控制输入.

不幸的是,这意味着用户无法使用他们所知的快捷方式在新窗口中打开链接,例如按住控件或单击鼠标中键.

问题

基于W3C DOM鼠标事件规范,我有一个似乎是一种可行的方法来使用jQuery来捕获鼠标输入和各种和弦键:

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

    }
 );
Run Code Online (Sandbox Code Playgroud)

我可以通过这种方式捕获控件 - 点击(在Firefox 3和IE7中测试),并且它正确地(?)报告左键单击来自鼠标按钮#0,但由于某种原因,此代码仍未捕获中间点击跨度,右键单击仍会弹出上下文菜单.我想至少捕获中间点击次数.

有人可以帮忙吗?

什么"控制"的意思

带有连接参数的GET提交/链接的问题是任何人都可以编辑地址栏并键入任何内容.我已经担心服务器端的身份验证和验证.这不是我想使用POST的原因.

我应该只向用户显示有意义的信息.内部数据库ID不是.我应该只是让用户以有意义的方式与应用程序交互.任意编辑地址栏不是其中之一.

人们总是打错字.但是,从系统的角度来看,地址栏中的拼写错误与应用程序逻辑中的缺陷之间没有区别,我宁愿不去决定哪一个刚刚发生在用户身上.

cle*_*tus 6

简短的回答?不能这样做.

答案很长? Javascript鼠标事件.还是做不到.

这引出了一个问题:你需要使用POST还是只是想做?您需要的唯一原因是查询字符串长度.至于想要,你提到"控制用户输入".这究竟是什么意思?

您永远不应该依赖浏览器进行输入验证. 为方便起见,您可以在那里进行,但服务器应始终验证输入.

或者是美学的原因(即更短,"更好"的URL)?

你正在重新发明超链接的轮子.我只是想确保你有一个非常好的理由这样做,因为它适得其反,你永远不会得到与实际超链接相同的浏览器支持和兼容性.此外,您可能只是通过让他们期望工作不起作用的东西来惹恼您的用户.不好.