y_method

ちょっとした機能

当前为 2021-01-10 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/419955/889436/y_method.js

  1. // ==UserScript==
  2. // @name y_method
  3. // @version 0.1
  4. // @description ちょっとした機能
  5. // @author y_kahou
  6. // ==/UserScript==
  7.  
  8.  
  9. /**
  10. * 対象までスクロールせずにクリックする
  11. * @param selector {string} - 取得対象のセレクタ
  12. */
  13. function click_(element) {
  14. var x = window.scrollX, y = window.scrollY
  15. element.click()
  16. window.scrollTo(x, y)
  17. }
  18. /**
  19. * 対象までスクロールせずにフォーカスする
  20. * @param selector {string} - 取得対象のセレクタ
  21. */
  22. function focus_(element) {
  23. var x = window.scrollX, y = window.scrollY
  24. element.focus()
  25. window.scrollTo(x, y)
  26. }
  27. /**
  28. * 対象のdomを取得できるまで取得を挑戦する
  29. * @param selector {string} - 取得対象のセレクタ
  30. * @param interval {number} - 次の挑戦までの時間ms
  31. * @param repeat {number} - 繰り返し回数
  32. */
  33. function repeatGetElements(selector, interval = 500, repeat = 60) {
  34. return new Promise(function(resolve, reject) {
  35. var cnt = 0
  36. var it = setInterval(function() {
  37. if (++cnt > 60) {
  38. clearInterval(it)
  39. reject("Could'n get " + selector)
  40. }
  41. var ret = document.querySelectorAll(selector)
  42. if (ret.length > 0) {
  43. clearInterval(it)
  44. resolve(ret)
  45. }
  46. }, interval)
  47. })
  48. }
  49.  
  50.  
  51. if (window.jQuery) (function($) {
  52. /**
  53. * 対象までスクロールせずにクリックする
  54. */
  55. $.fn.click_ = function() {
  56. click_(this[0])
  57. return this
  58. }
  59. /**
  60. * 対象までスクロールせずにフォーカスする
  61. */
  62. $.fn.focus_ = function() {
  63. focus_(this[0])
  64. return this
  65. }
  66. })(window.jQuery);