我正在从事一个宠物项目并处于研究阶段。
我试图拦截所有表单提交,onclick和每一个keydown。我选择的库是jquery或jquery + prototypejs。我想我可以将事件批处理成一个队列/堆栈,然后按时间间隔批量发送回服务器,以保持性能相对稳定。
表单提交和更改将相对简单..类似
$("form :inputs").bind("change", function() { ... record event... });
但是如何确保我优先于应用程序处理程序,因为我有一个习惯,即在存在验证问题时将返回false置于很多表单处理程序上。据我了解,这有效地阻止了事件的发展。
对于我的小型远程客户端,我会将他们的产品放到VPS上或在我的家庭数据中心运行。目前我使用的是一个基本的身份验证系统,给定一个用户名/密码,他们看到了网站,然后希望给我一些关于破坏或应该调整的一些理智的说明。
作为一个更好的解决方案,我编写了一个简单的代理Web服务器来执行上述操作,但允许我拥有一个DNS条目,然后根据凭据它发出内部请求,中继标头并根据需要重写URL。每个单独的html / text或application / *请求都被压缩并推送到sqlite表中,因此我可以部分重放他们所做的事情。现在我转移到前端,想捕获点击,keydown,并提交页面上的所有内容。
答案 0 :(得分:2)
要解决return false;
问题,请尝试使用自定义事件。
// Bind custom event to all forms
$('form').bind('custom_submit_event',function() {
alert('custom submit event');
});
// Bind submit event to all forms that triggers the custom event
$('form').submit(function() {
$(this).trigger('custom_submit_event');
});
// Your regular submit event for a specific form
$('#myform').submit(function() {
// Run validation/submission code
return false;
});
我没有经常使用自定义事件,但这对我有用。不知道为什么它也不适用于其他事件。
您还可以为document
分配处理程序。只要您没有遇到return false;
问题,它们就会冒泡到文档中。可能比在整个页面中拥有许多事件处理程序的开销更好(更有效)。
$(document).click(function() {
alert('click')
})
.keydown(function() {
alert('keydown')
});