JavaScript实现浏览器网页自动滚动并点击的示例代码


Posted in Javascript onDecember 05, 2020

1. 打开浏览器控制台窗口

JavaScript通常是作为开发Web页面的脚本语言,本文介绍的JavaScript代码均运行在指定网站的控制台窗口。一般浏览器的开发者窗口都可以通过在当前网页界面按F12快捷键调出,然后在上面的标签栏找到Console点击就是控制台窗口,在这里可以直接执行JavaScript代码,而chrome系浏览器的控制台界面可以使用快捷键Ctrl+Shift+J直接打开

2. 实时查看鼠标坐标

首先为了获取当前的鼠标位置的x、y坐标,需要先重写一个onmousemove函数来帮助我们实时查看光标处的x、y值,方便下一步编写代码时确定初始的y坐标和每次y方向滚动的距离

// 在控制台输入以下内容并回车,即可查看当前鼠标位置
// 具体查看方式:鼠标在网页上滑动时无效果,当鼠标悬停时即可在光标旁边看到此处的坐标
document.onmousemove = function(e){
 var x = e.pageX;
 var y = e.pageY;
 e.target.title = "X is "+x+" and Y is "+y;
};

3. 编写自动滚动代码

具体代码如下,将代码粘贴进控制台并回车,然后调用auto_scroll()函数(具体参数含义在代码注释查看)即可运行

// y轴是在滚动的,每次不一样;x坐标也每次从这些里面随机一个
var random_x = [603, 811, 672, 894, 999, 931, 970, 1001, 1037, 1076, 1094];
// 初始y坐标
var position = 200;
// 最大执行max_num次就多休眠一下
var max_num = 20;
// 单位是秒,每当cnt%max_num为0时就休眠指定时间(从数组中任选一个),单位是秒
var sleep_interval = [33, 23, 47, 37, 21, 28, 30, 16, 44];
// 当前正在执行第几次
var cnt = 0;

// 相当于random_choice的功能
function choose(choices)
{
 var index = Math.floor(Math.random() * choices.length);
 return choices[index];
};

// 相当于广泛的random,返回浮点数
function random(min_value, max_value)
{
 return min_value + Math.random() * (max_value - min_value);
};

// 模拟点击鼠标
function click(x, y)
{
 // x = x - window.pageXOffset;
 // y = y - window.pageYOffset;
 y = y + 200;
 try {
  var ele = document.elementFromPoint(x, y);
  ele.click();
  console.log("坐标 ("+x+", "+y+") 被点击");
 } catch (error) {
  console.log("坐标 ("+x+", "+y+") 处不存在元素,无法点击")
 }
};

// 定时器的含参回调函数
function setTimeout_func_range(time_min, time_max, step_min, step_max, short_sleep=true)
{
 if(cnt<max_num)
 {
  cnt = cnt + 1;
  if(short_sleep)
  {
   // 短休眠
   position = position + random(step_min, step_max);
   x = choose(random_x);
   scroll(x, position);
   console.log("滚动到坐标("+x+", "+position+")");
   click(x, position);
   time = random(time_min, time_max)*1000;
   console.log("开始" + time/1000 + 's休眠');
   setTimeout(setTimeout_func_range, time, time_min, time_max, step_min, step_max);
   // console.log(time/1000 + 's休眠已经结束');
  }else
  {
   // 长休眠,且不滑动,的回调函数
   time = random(time_min, time_max)*1000;
   console.log("开始" + time/1000 + 's休眠');
   setTimeout(setTimeout_func_range, time, time_min, time_max, step_min, step_max);
   // console.log(time/1000 + 's休眠已经结束');
  }
 }else
 {
  cnt = 0;
  console.log("一轮共计"+max_num+"次点击结束");
  time = choose(sleep_interval)*1000;
  console.log("开始" + time/1000 + 's休眠');
  setTimeout(setTimeout_func_range, time, time_min, time_max, step_min, step_max, false);
  // console.log(time/1000 + 's休眠已经结束(长休眠且不滑动)');
 }
};

// 自动滚动网页的启动函数
// auto_scroll(5, 10, 50, 200)表示每隔5~10秒滚动一次;每次滚动的距离为50~200高度
function auto_scroll(time_min, time_max, step_min, step_max)
{
 time = random(time_min, time_max)*1000;
 console.log("开始" + time/1000 + 's休眠');
 setTimeout(setTimeout_func_range, time, time_min, time_max, step_min, step_max);
 // console.log(time/1000 + 's休眠已经结束');
};

/*
---------以下内容无需用到,根据情况使用----------
// 自定义click的回调函数
// 若绑定到元素,则点击该元素会出现此效果
function click_func(e)
{
 var a = new Array("富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善");
 var $i = $("<span></span>").text(a[a_idx]);
 a_idx = (a_idx + 1) % a.length;
 var x = e.pageX,
 y = e.pageY;
 $i.css({
  "z-index": 999999999999999999999999999999999999999999999999999999999999999999999,
  "top": y - 20,
  "left": x,
  "position": "absolute",
  "font-weight": "bold",
  "color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"
 });
 $("body").append($i);
 $i.animate({
  "top": y - 180,
  "opacity": 0
 },
 1500,
 function() {
  $i.remove();
 });
};


// 在控制台输入以下内容,即可查看当前鼠标位置
document.onmousemove = function(e){
 var x = e.pageX;
 var y = e.pageY;
 e.target.title = "X is "+x+" and Y is "+y;
};
*/

代码运行效果如下

JavaScript实现浏览器网页自动滚动并点击的示例代码

以上就是JavaScript实现浏览器网页的自动滚动并点击的示例代码的详细内容,更多关于JavaScript 浏览器自动滚动点击的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
用于table内容排序
Jul 21 Javascript
几个有趣的Javascript Hack
Jul 24 Javascript
js类型检查实现代码
Oct 29 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
vue 解决循环引用组件报错的问题
Sep 06 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 Javascript
JavaScript实现移动端带transition动画的轮播效果
Mar 24 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
element中table高度自适应的实现
Oct 21 Javascript
详解React中共享组件逻辑的三种方式
Feb 02 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 #Vue.js
js获取图片的base64编码并压缩
Dec 05 #Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 #Javascript
可拖拽组件slider.js使用方法详解
Dec 04 #Javascript
js实现复制粘贴的两种方法
Dec 04 #Javascript
echarts浮动显示单位的实现方法示例
Dec 04 #Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 #Javascript
You might like
JAVA/JSP学习系列之六
2006/10/09 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
javascript基本算法汇总
2016/03/09 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
python实现网站的模拟登录
2016/01/04 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python re模块findall()函数实例解析
2018/01/19 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
公司中秋节活动方案
2014/02/12 职场文书
会计工作态度自我评价
2015/03/06 职场文书
质检员岗位职责范本
2015/04/07 职场文书
检讨书格式
2015/05/07 职场文书
羊脂球读书笔记
2015/06/30 职场文书
学校隐患排查制度
2015/08/05 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python