可以捕获Web浏览器中的所有事件吗?

时间:2010-05-02 03:52:42

标签: javascript jquery events project

我正在从事一个宠物项目并处于研究阶段。

快速摘要

我试图拦截所有表单提交,onclick和每一个keydown。我选择的库是jquery或jquery + prototypejs。我想我可以将事件批处理成一个队列/堆栈,然后按时间间隔批量发送回服务器,以保持性能相对稳定。

关注

表单提交和更改将相对简单..类似

$("form :inputs").bind("change", function() { ... record event... }); 

但是如何确保我优先于应用程序处理程序,因为我有一个习惯,即在存在验证问题时将返回false置于很多表单处理程序上。据我了解,这有效地阻止了事件的发展。

我的项目

对于我的小型远程客户端,我会将他们的产品放到VPS上或在我的家庭数据中心运行。目前我使用的是一个基本的身份验证系统,给定一个用户名/密码,他们看到了网站,然后希望给我一些关于破坏或应该调整的一些理智的说明。

作为一个更好的解决方案,我编写了一个简单的代理Web服务器来执行上述操作,但允许我拥有一个DNS条目,然后根据凭据它发出内部请求,中继标头并根据需要重写URL。每个单独的html / text或application / *请求都被压缩并推送到sqlite表中,因此我可以部分重放他们所做的事情。现在我转移到前端,想捕获点击,keydown,并提交页面上的所有内容。

1 个答案:

答案 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')
    });