能否捕获网页浏览器中的所有事件?

3
我正在进行一个宠物项目,并处于研究阶段。
快速摘要:
我试图拦截所有表单提交、点击和每个按键按下。我的库选择是jQuery,或者jQuery + PrototypeJS。我想我可以将事件批量处理成队列/堆栈,以时间间隔批量发送回服务器,以保持性能相对稳定。
顾虑:
表单提交和更改会相对简单。就像这样:
$("form :inputs").bind("change", function() { ... record event... }); 

但是,如何确保我的处理程序优先于应用程序处理程序呢?当出现验证问题时,我有一个习惯,就是在很多表单处理程序上放置“return false”。据我所知,这实际上会停止事件。

我的项目

对于我较小的远程客户,我将他们的产品放入VPS或在我的家庭数据中心运行。目前,我使用基本身份验证系统,给定用户名/密码后,他们可以看到网站,然后希望他们能发送一些关于什么是错误或应该调整的合理笔记。

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

1个回答

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

我认为你的想法可能是最好的解决方案,今天会写一个快速的模型,并且无论结果如何都会将其发布到我的杂项谷歌项目中。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接