【发布时间】:2010-09-28 22:25:11
【问题描述】:
背景
我在 Web 应用程序中使用 POST 表单提交而不是带有串联参数的链接,因此我可以控制输入。
很遗憾,这意味着用户无法使用他们知道的快捷方式在新窗口中打开链接,例如按住 Control 键单击或中键单击。
问题
基于W3C DOM mouse events specification:
$("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();
}
);
我可以通过这种方式捕获控制点击(在 Firefox 3 和 IE7 中测试),并且它正确(?)报告左键点击来自鼠标按钮 #0,但由于某种原因,这段代码仍然没有捕获中间-单击跨度,右键单击仍会弹出上下文菜单。至少,我想捕获中间点击。
有人可以帮忙吗?
什么是“控制”
带有连接参数的 GET 提交/链接的问题是任何人都可以编辑地址栏并输入任何内容。我已经担心服务器端的身份验证和验证。这不是我想使用 POST 的原因。
我应该只向用户展示有意义的信息。内部数据库 ID 不是。我应该只让用户以有意义的方式与应用程序交互。任意编辑地址栏不是其中之一。
人们总是打错字。不过,从系统的角度来看,地址栏中的拼写错误与应用程序逻辑中的缺陷之间没有区别,我宁愿不将决定哪个错误的责任推给用户。
【问题讨论】:
-
详细一点也无妨。
标签: javascript jquery dom mouse