您现在的位置是:群英 > 开发技术 > web开发
如何用JavaScript实现一个按键精灵?方法是什么?
Admin发表于 2022-08-31 17:26:29823 次浏览
在实际案例的操作过程中,我们可能会遇到“如何用JavaScript实现一个按键精灵?方法是什么?”这样的问题,那么我们该如何处理和解决这样的情况呢?这篇小编就给大家总结了一些方法,具有一定的借鉴价值,希望对大家有所帮助,接下来就让小编带领大家一起了解看看吧。


JavaScript奇淫技巧:按键精灵

按键精灵之类的自动化工具,可以解放双手,帮我们自动完成许多工作,在很多场景中,可以极大提升生产力。

本文将展示:用JavaScript实现一个“按键精灵”,演示自动完成点击、聚焦、输入等操作。

实现效果

如上图动画,在页面中,自动执行了如下操作:

1、间隔一秒依次点击两个按钮;

2、给输入框设置焦点;

3、在输入框输入文字;

4、点击打开链接;

功能原理

原理并不复杂,获取元素,并执行点击、设焦点等事件。

难点有两处:

1、没有ID、Name的元素,不能使用getElementById、getElementByName,如何对其定位;

解决方法是:使用querySelectorAll获取页面所有元素,然后用匹配源码的方式,精确定位元素。代码如下:

2、如何设置延时:点击一个位置后,等待几秒,再执行下一个操作。

解决方法是:使用setTimeOut及回调函数。代码如下:

重点代码详解

依前面讲述的原理,准备好点击、设焦点、赋值函数,如下:

调用时,传入源码、延时值、回调函数。

即:对指定源码的元素进行操作,然后延时一定时长,再执行回调函数。

其中源码部分可以在页面查看器中获得,如下图所示:

完整源码

这里再给出以上示例的完整代码,保存为html即可运行。

<html>
<body>
<script>
document.body.addEventListener("click", function(e) {
console.log('点击:',e.originalTarget);
});
</script>
<h1>JS版按键精灵</h1>
<div>
一、按钮:<br>
<button style="width: 100px; height:100px;" onclick="alert('1被点击');">1</button>
<button style="width: 100px; height:100px;" onclick="alert('2被点击');">2</button>
<br>
<br>
二、输入框:
<input type="text" value="">
<br>
<br>
三、链接:<a href="http://jshaman.com" target="iframe1">jshaman.com</a>
<br>
<iframe name="iframe1"></iframe>
</div>
<br>
<hr>
<button onclick="fun1();">开始自动执行</button>
<br>
依次执行以下操作:<br>
1、点击第一、第二按钮;2、给输入框设置焦点;3、给输入框设置值:abc;4、点击链接;
<br>
</body>
<script>
//点击事件
//参数:
//outer_html:要点击的元素源码
//delay:延时
//call_back:回调函数
function click(outer_html, delay, call_back){
//获取页面所有元素
var all_elements = document.querySelectorAll('*');
//遍历元素
for(i=0; i<all_elements.length; i++){
//匹配符合条件的元素
if(all_elements[i].outerHTML==outer_html){
//点击
all_elements[i].click();
}
}
if(delay && call_back){
//过多少毫秒后执行回调函数
setTimeout(call_back, delay)
}
};
//设置焦点,即选中
//参数:
//outer_html:元素源码
//delay:延时
//call_back:回调函数
function focus(outer_html, delay, call_back){
//获取页面所有元素
var all_elements = document.querySelectorAll('*');
//遍历元素
for(i=0; i<all_elements.length; i++){
//匹配符合条件的元素
if(all_elements[i].outerHTML==outer_html){
//设焦点
all_elements[i].focus();
}
}
if(delay && call_back){
//过多少毫秒后执行回调函数
setTimeout(call_back, delay)
}
};
//设置内容
function setvalue(outer_html, type, value, delay, call_back){
//获取页面所有元素
var all_elements = document.querySelectorAll('*');
//遍历元素
for(i=0; i<all_elements.length; i++){
//匹配符合条件的元素
if(all_elements[i].outerHTML==outer_html){
//点击
all_elements[i][type] = value;
}
}
if(delay && call_back){
//过多少毫秒后执行回调函数
setTimeout(call_back, delay)
}
};
//点击按钮
function fun1(){
//要点击的元素的源码
var outer_html = `<button style="width: 100px; height:100px;" onclick="alert('1被点击');">1</button>`;
click(outer_html, 1000, fun2);
}
//点击按钮
function fun2(){
//要点击的元素的源码
var outer_html = `<button style="width: 100px; height:100px;" onclick="alert('2被点击');">2</button>`;
click(outer_html, 1000, fun3);
}
//给input设置焦点和值
function fun3(){
//要点击的元素的源码
var outer_html = `<input type="text" value="">`;
focus(outer_html);
setvalue(outer_html,"value","abc",1000,call_back_function)
}
//点击链接
function call_back_function(){
var out_html = `<a href="http://jshaman.com" target="iframe1">jshaman.com</a>`;
click(out_html);
console.log("已完成自动点击")
}
</script>
</html>

代码安全性

公开透明的JavaScript很容易被看懂功能逻辑,也可以被任意修改。如果希望提高代码安全性,应对代码加密保护。比如,可以使用专业的JavaScript代码混淆加密工具JShaman。上面完整源码中的JavaScript代码经JShaman加密后,会变成如下形式,而使用不受任何影响:

注:左侧为原始代码,右侧为加密后的代码。



到此这篇关于“如何用JavaScript实现一个按键精灵?方法是什么?”的文章就介绍到这了,感谢各位的阅读,更多相关如何用JavaScript实现一个按键精灵?方法是什么?内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: JavaScript
相关信息推荐
2022-08-26 17:47:14 
摘要:显示方法:1、用substr()从字符串中截取指定长度的字符并返回,语法“substr(字符串,开始位置,字符个数)”;2、用substr_replace(),语法“substr_replace(字符串,'',开始位置,去除字符个数)”。
2022-02-10 18:16:07 
摘要:这篇文章我们来了解PHP如何将文件批量转换编码为UTF-8,小编觉得挺实用的,因此分享给大家做个参考,下文有详细的介绍,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
2022-10-11 17:52:29 
摘要:这篇文章主要介绍了分享JVM 的四种引用方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部