zoukankan      html  css  js  c++  java
  • js 模拟鼠标拖动

    window.addEventListener('message', function (event) {
      if (event.source != window) return;
    
      if (event.data.event_type && (event.data.event_type == "mockVerify")) {
        mockVerify();
      }
    })
    
    
    
    function mockVerify(){
        console.log("mockVerify");
    
        var btn=document.getElementById("nc_1_n1z");
        var mousedown = document.createEvent("MouseEvents");
        var rect = btn.getBoundingClientRect();
        var x = rect.x;
        var y = rect.y;
        mousedown.initMouseEvent("mousedown",true,true,window,0,  
                x, y, x, y,false,false,false,false,0,null);
        btn.dispatchEvent(mousedown);
        
        var dx = 0;
        var dy = 0;
        var  interval = setInterval(function(){
            var mousemove = document.createEvent("MouseEvents");
            var _x = x + dx;
            var _y = y + dy;
            mousemove.initMouseEvent("mousemove",true,true,window,0,  
                    _x, _y, _x, _y,false,false,false,false,0,null);
            btn.dispatchEvent(mousemove);
            
            btn.dispatchEvent(mousemove);
            if(_x - x >= 300){
                clearInterval(interval);
                var mouseup = document.createEvent("MouseEvents");
                mouseup.initMouseEvent("mouseup",true,true,window,0,  
                _x, _y, _x, _y,false,false,false,false,0,null);
                btn.dispatchEvent(mouseup);
                
                setTimeout(function(){
                    if(btn.className.indexOf('btn_ok') > -1){
                        console.log(btn.className);
                        document.getElementById("verify").click();
                        
                    }
                }, 1000);
            }
            else{
                dx += Math.ceil(Math.random() * 50);
                console.log(dx);
            }
        }, 30);
        
        
    }

    滑块验证

    function mockVerify(btnSelector){
        var btn=document.querySelector(".nc_iconfont.btn_slide");
        var mousedown = document.createEvent('MouseEvents');
        var rect = btn.getBoundingClientRect();
        var x = rect.x;
        var y = rect.y;
        mousedown.initMouseEvent('mousedown',true,true,window,0,  
                x, y, x, y,false,false,false,false,0,null);
        btn.dispatchEvent(mousedown);
        
        var dx = 0;
        var dy = 0;
        var  interval = setInterval(function(){
            var mousemove = document.createEvent('MouseEvents');
            var _x = x + dx;
            var _y = y + dy;
            mousemove.initMouseEvent('mousemove',true,true,window,0,  
                    _x, _y, _x, _y,false,false,false,false,0,null);
            btn.dispatchEvent(mousemove);
            
            btn.dispatchEvent(mousemove);
            if(_x - x >= 308){
                clearInterval(interval);
                var mouseup = document.createEvent('MouseEvents');
                mouseup.initMouseEvent('mouseup',true,true,window,0,  
                _x, _y, _x, _y,false,false,false,false,0,null);
                btn.dispatchEvent(mouseup);
                var reloadTimeout = setTimeout(function(){
                    location.reload();
                }, 6000);
                var retries = 10;
                var checkInterval = setInterval(function(){
                    console.log(btn.className)
                    if(btn.className.indexOf('btn_ok') > -1){
                        console.log("btn_ok");
                        clearInterval(checkInterval);
                        document.querySelector(btnSelector).click();
                    }
                    else if(retries -- == 0){
                        console.log("btn_error")
                        clearInterval(checkInterval);
                    }
                }, 500);
            }
            else{
                dx += Math.ceil(Math.random() * 50);
                
            }
        }, 60); 
    }
  • 相关阅读:
    Python魔法函数
    Python变量的本质与intern机制
    Python中IO概述
    自用官方文档索引(日常更新)
    关于 mysql json类型参数的查询过滤
    由于升级iOS版本导致证书丢失等一系列问题汇总
    Android系统获取手机型号和系统版本号,以及其他配置信息
    Android Debug证书过期的最佳解决方案
    关于编写高德导航Demo的手记(一)
    iOS6.0以上版本,关于NSDateFormatter的问题
  • 原文地址:https://www.cnblogs.com/rubekid/p/11938753.html
Copyright © 2011-2022 走看看