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

“keypress”的addeventlistener=验证码替代?

  •  3
  • jsejcksn  · 技术社区  · 14 年前

    如果我不在乎我的观众是否启用了JavaScript,这是不是一个很好的替代验证码等的方法?

    巫师们,把我摆正。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Andrzej Doyle    14 年前

    我不确定他们是否能“本地”生成按键事件(我想你可能是对的,他们不能,但如果我知道这是可能的,这并不奇怪)。

    element.onkeypress() 直接的。如果bot可以确定它需要按一个键来前进,那么实际上可以归结为需要调用一个特定的事件处理程序方法,并且bot 可以 window.event .

    可以 要检测到这一点,必须非常严格地在处理程序中检测事件对象。我不认为bot可以很容易地创建一个本地等效的事件对象,所以也许通过检查原型链,您可以在两者之间进行分配。然而,对于一般的使用来说,这几乎肯定是太脆弱了,并且在不同的浏览器/环境/插件/等等之间无法可靠地工作。

    因此,我不认为这是一条卓有成效的道路,因为您无法在事件处理程序中判断事件是否“真实”。浏览器本机代码是不同的,因为bots实际上不能触发click事件,但是在Javascript中,我看不到一种简单的方法来阻止您的方法被简单地调用。

        2
  •  0
  •   CodesInChaos    14 年前