当前位置:   article > 正文

JavaScript奇淫技巧:按键精灵_自动精灵js代码说明文档

自动精灵js代码说明文档

JavaScript奇淫技巧:按键精灵

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

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

实现效果

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

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

2、给输入框设置焦点;

3、在输入框输入文字;

4、点击打开链接;

功能原理

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

难点有两处:

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

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

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

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

重点代码详解

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

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

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

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

完整源码

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

  1. <html>
  2. <body>
  3. <script>
  4. document.body.addEventListener("click", function(e) {
  5. console.log('点击:',e.originalTarget);
  6. });
  7. </script>
  8. <h1>JS版按键精灵</h1>
  9. <div>
  10. 一、按钮:<br>
  11. <button style="width: 100px; height:100px;" onclick="alert('1被点击');">1</button>
  12. <button style="width: 100px; height:100px;" onclick="alert('2被点击');">2</button>
  13. <br>
  14. <br>
  15. 二、输入框:
  16. <input type="text" value="">
  17. <br>
  18. <br>
  19. 三、链接:<a href="http://jshaman.com" target="iframe1">jshaman.com</a>
  20. <br>
  21. <iframe name="iframe1"></iframe>
  22. </div>
  23. <br>
  24. <hr>
  25. <button onclick="fun1();">开始自动执行</button>
  26. <br>
  27. 依次执行以下操作:<br>
  28. 1、点击第一、第二按钮;2、给输入框设置焦点;3、给输入框设置值:abc;4、点击链接;
  29. <br>
  30. </body>
  31. <script>
  32. //点击事件
  33. //参数:
  34. //outer_html:要点击的元素源码
  35. //delay:延时
  36. //call_back:回调函数
  37. function click(outer_html, delay, call_back){
  38. //获取页面所有元素
  39. var all_elements = document.querySelectorAll('*');
  40. //遍历元素
  41. for(i=0; i<all_elements.length; i++){
  42. //匹配符合条件的元素
  43. if(all_elements[i].outerHTML==outer_html){
  44. //点击
  45. all_elements[i].click();
  46. }
  47. }
  48. if(delay && call_back){
  49. //过多少毫秒后执行回调函数
  50. setTimeout(call_back, delay)
  51. }
  52. };
  53. //设置焦点,即选中
  54. //参数:
  55. //outer_html:元素源码
  56. //delay:延时
  57. //call_back:回调函数
  58. function focus(outer_html, delay, call_back){
  59. //获取页面所有元素
  60. var all_elements = document.querySelectorAll('*');
  61. //遍历元素
  62. for(i=0; i<all_elements.length; i++){
  63. //匹配符合条件的元素
  64. if(all_elements[i].outerHTML==outer_html){
  65. //设焦点
  66. all_elements[i].focus();
  67. }
  68. }
  69. if(delay && call_back){
  70. //过多少毫秒后执行回调函数
  71. setTimeout(call_back, delay)
  72. }
  73. };
  74. //设置内容
  75. function setvalue(outer_html, type, value, delay, call_back){
  76. //获取页面所有元素
  77. var all_elements = document.querySelectorAll('*');
  78. //遍历元素
  79. for(i=0; i<all_elements.length; i++){
  80. //匹配符合条件的元素
  81. if(all_elements[i].outerHTML==outer_html){
  82. //点击
  83. all_elements[i][type] = value;
  84. }
  85. }
  86. if(delay && call_back){
  87. //过多少毫秒后执行回调函数
  88. setTimeout(call_back, delay)
  89. }
  90. };
  91. //点击按钮
  92. function fun1(){
  93. //要点击的元素的源码
  94. var outer_html = `<button style="width: 100px; height:100px;" onclick="alert('1被点击');">1</button>`;
  95. click(outer_html, 1000, fun2);
  96. }
  97. //点击按钮
  98. function fun2(){
  99. //要点击的元素的源码
  100. var outer_html = `<button style="width: 100px; height:100px;" onclick="alert('2被点击');">2</button>`;
  101. click(outer_html, 1000, fun3);
  102. }
  103. //input设置焦点和值
  104. function fun3(){
  105. //要点击的元素的源码
  106. var outer_html = `<input type="text" value="">`;
  107. focus(outer_html);
  108. setvalue(outer_html,"value","abc",1000,call_back_function)
  109. }
  110. //点击链接
  111. function call_back_function(){
  112. var out_html = `<a href="http://jshaman.com" target="iframe1">jshaman.com</a>`;
  113. click(out_html);
  114. console.log("已完成自动点击")
  115. }
  116. </script>
  117. </html>

代码安全性

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/582539
推荐阅读
相关标签
  

闽ICP备14008679号