sosovalue_execute.user.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // ==UserScript==
  2. // @name sosovalue 半自动点击
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.6
  5. // @description 检测并点击页面中的 5 组按钮,并关闭新弹出的页面
  6. // @author Jack
  7. // @match https://sosovalue.com/*/*
  8. // @grant none
  9. // ==/UserScript==
  10. (function() {
  11. 'use strict';
  12. const GroupSelectors = [
  13. '#\\:rf\\: > span.transition-opacity.font-medium',
  14. '#\\:rh\\: > span.transition-opacity.font-medium',
  15. '#\\:ri\\: > span.transition-opacity.font-medium',
  16. '#\\:rj\\: > span.transition-opacity.font-medium',
  17. '#\\:rk\\: > span.transition-opacity.font-medium',
  18. '#\\:rg\\: > span.transition-opacity.font-medium',
  19. ];
  20. let newWindow = null;
  21. const originalOpen = window.open;
  22. window.open = function(url, name, features) {
  23. newWindow = originalOpen(url, name, features);
  24. return newWindow;
  25. };
  26. function clickButtonGroup(group, delay, closeWindow = false, callback) {
  27. let completed = 0;
  28. group.forEach((selector, index) => {
  29. setTimeout(() => {
  30. const button = document.querySelector(selector);
  31. if (button) {
  32. button.click();
  33. if (closeWindow && newWindow) {
  34. newWindow.close();
  35. }
  36. }
  37. completed++;
  38. if (completed === group.length && callback) {
  39. callback();
  40. }
  41. }, index * delay);
  42. });
  43. }
  44. function createCustomButtons() {
  45. const executeButton = document.createElement('button');
  46. executeButton.textContent = '执行';
  47. executeButton.style.position = 'fixed';
  48. executeButton.style.top = '20px';
  49. executeButton.style.left = '50%';
  50. executeButton.style.padding = '10px 20px';
  51. executeButton.style.backgroundColor = '#007bff';
  52. executeButton.style.color = '#fff';
  53. executeButton.style.border = 'none';
  54. executeButton.style.borderRadius = '5px';
  55. executeButton.style.cursor = 'pointer';
  56. executeButton.style.zIndex = '10000';
  57. executeButton.addEventListener('click', () => {
  58. clickButtonGroup(GroupSelectors, 1000, true, () => {
  59. // 所有按钮点击完成后,等待1秒刷新页面
  60. setTimeout(() => {
  61. location.reload();
  62. }, 1000);
  63. });
  64. });
  65. document.body.appendChild(executeButton);
  66. }
  67. window.addEventListener('load', createCustomButtons);
  68. setInterval(() => {
  69. if (newWindow && !newWindow.closed) {
  70. newWindow.close();
  71. }
  72. }, 1000);
  73. })();