javascript - 如何使用js主动触发事件?
问题描述
https://login.taobao.com/memb...
登录淘宝账户多次密码错误后,就会需要按住滑块拖动到右边(如图)。怎么用js实现“按住滑块,拖动到左右边呢”?
问题解答
回答1:这个滑动块是用来检测机器人的,如果你用脚本直接滑动过去,它会判断你为机器人。其实它的本质并不是要你滑动过去,而是检测你在拖动前,拖动中,拖动后的鼠标行为是否符合真人特征
回答2:原生js里有个 createEvent()方法,可以主动触发事件。例如:
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title></head><body> <p onclick='alert(1)'></p> <script type='text/javascript'>var event = document.createEvent(’MouseEvents’);event.initMouseEvent(’click’, true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0 ,null);aaa.dispatchEvent(event); </script></body></html>
你可以根据自己将click换成mousemove。
回答3:看图,该滚动条初始化是一个span也就是你圈的部分,还有一个p用于显示拖动进度。如果你是问的只是针对达到它的验证在拖动该span的时候该span的left和p.nc_1__bg的width发生改变,这时尝试主动修改这两个style,值都设为258px,然后点击(或者说mousedown、mouseup)该span,发现能够完成验证。
思路:修改style,然后触发span的click、mousedown、mouseup事件,因为不确定它具体是绑定在up还是down事件中(根据初步操作,应该是绑定在鼠标按下事件中),所以都触发一遍,至于click只是为了防漏.代码: 修改样式:就是修改p的width和span的left为258px,这里略过。 js:$(’#nc_1_wrapper #nc_1_n1z’).click(); //触发单击事件 $(’#nc_1_wrapper #nc_1_n1z’).mousedown(); //触发鼠标按下事件 $(’#nc_1_wrapper #nc_1_n1z’).mouseup(); //触发鼠标弹起事件回答4:
其实就是模拟鼠标抬起到时候就行判断
相关文章:
1. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. angular.js - angularjs的自定义过滤器如何给文字加颜色?4. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!5. java - mybatis怎么实现在数据库中有就修改,没有就添加6. docker内创建jenkins访问另一个容器下的服务器问题7. MYSQL新建用户设置可以远程访问的问题8. mysql - SQL操作时间的函数?9. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?10. docker api 开发的端口怎么获取?
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)