代码之家  ›  专栏  ›  技术社区  ›  David

是否可以在Web浏览器中捕获所有事件?

  •  3
  • David  · 技术社区  · 15 年前

    我正在做一个宠物项目,目前正处于研究阶段。

    快速摘要

    我试图拦截所有表单提交、onclick和每个keydown。我选择的库要么是jquery,要么是jquery+prototypejs。我想我可以将事件成批地放入一个队列/堆栈中,并以时间间隔成批地将其发送回服务器,以保持性能相对稳定。

    关注

    表单提交和更改相对简单。有点像

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

    但是,如何确保我的优先级高于应用程序处理程序,因为我有一个习惯,当存在验证问题时,我的许多表单处理程序都会返回false。据我所知,这有效地阻止了事件的发展。

    我的计划

    对于我较小的远程客户,我会把他们的产品放到VPS上,或者在我的家庭数据中心运行。目前,我使用的是一个基本的认证系统,给定用户名/密码,他们就会看到网站,然后希望能给我发送一些关于什么是坏的或应该调整的合理的说明。

    作为一个更好的解决方案,我编写了一个简单的代理web服务器,它执行上述操作,但允许我有一个dns条目,然后根据凭据,它生成一个内部请求中继头并根据需要重新编写url。每个html/text或application/*请求都被压缩并放入一个sqlite表中,这样我就可以部分地重播它们所做的事情。现在我要转到前端,并希望捕获页面上所有内容的单击、keydown和提交。

    1 回复  |  直到 15 年前
        1
  •  2
  •   user113716    15 年前

    为了通过 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 . 只要你不打 返回false; 问题,他们的事件将泡沫文件。可能比在整个页面中有许多事件处理程序的开销更好(更有效)。

        $(document).click(function() {
            alert('click')
        })
        .keydown(function() {
            alert('keydown')
        });