Pinnacle Optimize

hdu pinnacle刷题网站的优化脚本。

当前为 2023-06-16 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Pinnacle Optimize
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description hdu pinnacle刷题网站的优化脚本。
  6. // @author Lycoiref
  7. // @match *://pinnacle-primary-fe.mjclouds.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=mjclouds.com
  9. // @license MIT
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // Your code here...
  17. // hdu pinnacle刷题网站优化脚本
  18. window.onload = async () => {
  19. while(!document.querySelector('.items-center') || !document.querySelector('button') || !document.querySelector('.whitespace-pre-line')) {
  20. await new Promise((resolve) => {
  21. setTimeout(resolve, 100)
  22. })
  23. }
  24. let options = document.querySelectorAll('.items-center')
  25. let btns = document.querySelectorAll('button')
  26. let question = document.querySelector('.whitespace-pre-line')
  27.  
  28. window.addEventListener('keypress', (e) => {
  29. // QWER分别对应1234个选项
  30. switch (e.key) {
  31. case 'q':
  32. options[0].click()
  33. break
  34. case 'w':
  35. options[1].click()
  36. break
  37. case 'e':
  38. options[2].click()
  39. break
  40. case 'r':
  41. options[3].click()
  42. break
  43. }
  44. // 空格键对应下一题
  45. if (e.key === ' ') {
  46. if (btns[1].attributes['disabled']) {
  47. btns[2].click()
  48. // 清除focus
  49. document.activeElement.blur()
  50. } else {
  51. btns[1].click()
  52. }
  53. }
  54. })
  55.  
  56. // 创建对question的观察进程
  57. let observerOptions = {
  58. childList: true,
  59. subtree: true,
  60. attributes: true,
  61. // 监听innerHTML的变化
  62. characterData: true
  63. }
  64. let observer = new MutationObserver((mutations) => {
  65. console.log('question changed')
  66. options = document.querySelectorAll('.items-center')
  67. })
  68.  
  69. observer.observe(question, observerOptions)
  70. }
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. })();