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不是.我应该只是让用户以有意义的方式与应用程序交互.任意编辑地址栏不是其中之一.
人们总是打错字.但是,从系统的角度来看,地址栏中的拼写错误与应用程序逻辑中的缺陷之间没有区别,我宁愿不去决定哪一个刚刚发生在用户身上.
简短的回答?不能这样做.
答案很长? Javascript鼠标事件.还是做不到.
这引出了一个问题:你需要使用POST还是只是想做?您需要的唯一原因是查询字符串长度.至于想要,你提到"控制用户输入".这究竟是什么意思?
您永远不应该依赖浏览器进行输入验证. 为方便起见,您可以在那里进行,但服务器应始终验证输入.
或者是美学的原因(即更短,"更好"的URL)?
你正在重新发明超链接的轮子.我只是想确保你有一个非常好的理由这样做,因为它适得其反,你永远不会得到与实际超链接相同的浏览器支持和兼容性.此外,您可能只是通过让他们期望工作不起作用的东西来惹恼您的用户.不好.
归档时间: |
|
查看次数: |
4205 次 |
最近记录: |