RamisAmuki Utils

RamisAmuki Utils.

目前为 2023-07-29 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/469263/1227514/RamisAmuki%20Utils.js

  1. // ==UserScript==
  2. // @name RamisAmuki Utils
  3. // @description RamisAmuki Utils.
  4. // @author RamisAmuki
  5. // @grant none
  6. // ==/UserScript==
  7.  
  8. function check_rate_price(liqs, querys) {
  9. const li_rate_node = liqs(querys.rate);
  10. const li_rate = li_rate_node != null ? parseInt(li_rate_node.innerText) : 0;
  11. const li_price = parseInt(liqs(querys.price).innerText.replace(",", ""));
  12. let base_rate = Number(localStorage.getItem("rate-input") || 90);
  13. let base_price = Number(localStorage.getItem("price-input") || 100);
  14. return [li_rate < base_rate, li_price > base_price].every((b) => b);
  15. }
  16.  
  17. function disabling(li) {
  18. li.style.display = "none";
  19. }
  20.  
  21. function filter(checker, querys) {
  22. document
  23. .querySelectorAll(querys.lists)
  24. .forEach((li) => checker((q) => li.querySelector(q)) && disabling(li));
  25. }
  26.  
  27. function appendFilterButton(
  28. checker,
  29. querys,
  30. margin = null,
  31. innerHTML = "Filter",
  32. float = "right",
  33. height = "30px",
  34. color = "#000",
  35. backgroundColor = "#f6dbae"
  36. ) {
  37. // ボタン要素を作成
  38. let btn = document.createElement("button");
  39.  
  40. // ボタンを装飾
  41. btn.innerHTML = innerHTML;
  42. btn.style.float = float;
  43. btn.style.height = height;
  44. btn.style.color = color;
  45. btn.style.backgroundColor = backgroundColor;
  46. if (margin != null) btn.style.margin = margin;
  47.  
  48. // 実行する関数
  49. btn.onclick = () => filter(checker, querys);
  50.  
  51. // ボタンを追加
  52. document.querySelector(querys.button_parent).appendChild(btn);
  53. }
  54.  
  55. function appendRatePriceInput(querys) {
  56. appendInput(querys, "rate", 99, 0, 90);
  57. appendInput(querys, "price", null, 1, 100);
  58. }
  59.  
  60. function appendInput(querys, id, max, min, default_val) {
  61. const input = document.createElement("input");
  62. const label = document.createElement("label");
  63.  
  64. input.type = "number";
  65. input.id = id + "-input";
  66. if (max != null) input.max = max;
  67. input.min = min;
  68. input.step = 1;
  69. input.value = localStorage.getItem(input.id) || default_val; // nullだった場合、初期値にする
  70. input.onchange = () => {
  71. localStorage.setItem(input.id, input.value);
  72. };
  73. label.htmlFor = input.id;
  74. label.style.fontSize = "13px";
  75. label.style.maxWidth = "115px";
  76. label.style.marginLeft = label.style.marginRight = "5px";
  77. label.innerText = "rate : ";
  78.  
  79. document.querySelector(querys.button_parent).appendChild(label);
  80. label.appendChild(input);
  81. }
  82.  
  83. function waitForElement(selector, callback, intervalMs, timeoutMs) {
  84. const startTimeInMs = Date.now();
  85. findLoop();
  86.  
  87. function findLoop() {
  88. if (document.querySelector(selector) != null) {
  89. callback();
  90. return;
  91. } else {
  92. setTimeout(() => {
  93. if (timeoutMs && Date.now() - startTimeInMs > timeoutMs) return;
  94. findLoop();
  95. }, intervalMs);
  96. }
  97. }
  98. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址