Greasy Fork镜像 支持简体中文。

搜索

洛谷题目快捷搜索

  1. // ==UserScript==
  2. // @name 搜索
  3. // @namespace n/a
  4. // @version 1.23.5
  5. // @description 洛谷题目快捷搜索
  6. // @author SCP982
  7. // @match https://www.luogu.com.cn
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function(){
  12. 'use strict';
  13. //以这个作为基础,就是查题的网址前缀,单输没用
  14. var add = "https://www.luogu.com.cn/problem";
  15. function get(){
  16. //document.getElementsByClassName()方法返回文档中所有指定类名的元素集合,作为NodeList对象
  17. //NodeList 对象代表一个有顺序的节点列表。 NodeList对象,我们可以通过节点列表中的节点索引号来访问列表中的节点(索引号从0开始)
  18. //提示:你可以使用NodeList对象的length属性来确定指定类名的元素个数,并循环各个元素来获取你需要的那个元素
  19. var tar = document.getElementsByClassName("am-form-field")[0].value;
  20. if(tar === "")return;
  21. //adress
  22. var ad = add + "/list?keyword=" + tar + "&content=false";
  23. location.href = ad;
  24. }
  25. function sName(){
  26. //看不懂的自己去洛谷首页源代码里找,是个类名
  27. var tar = document.getElementsByClassName("am-form-field")[0].value;
  28. if(tar === "")return;
  29. var targ = tar.toUpperCase();
  30. var asd = add;
  31. //截取部分关键词
  32. //洛谷的题号格式
  33. if(tar.match(/^[1-9][0-9][0-9][0-9]+$/) == tar)asd = asd + "/P" + tar;
  34. //cf题单的题号
  35. else if(targ.match(/^[0-9]+[A-Z][0-9]?$/) == targ)asd = asd + "/CF" + targ;
  36. //所有洛谷本身的前缀
  37. else if(targ.match(/^(?:U|P|T|CF|SP|AT|UVA)[0-9]+[A-Z]?[0-9]?$/) == targ)asd = asd + "/" + targ;
  38. //搜一下前面求出来的题号有没有
  39. else asd = add + "/list?keyword=" + tar + "&content=false";
  40. location.href = asd;
  41. }
  42. //弄一个按钮“搜索”
  43. var button = document.createElement("button");
  44. button.className = "am-btn am-btn-success am-btn-sm";
  45. button.name = "search";
  46. button.id = "search";
  47. button.innerHTML = "搜索";
  48. button.onclick = function(){get();};
  49. //取到爹
  50. var locations=document.getElementsByClassName("lg-index-content")[0].getElementsByClassName("lg-article lg-index-stat")[0].getElementsByClassName("am-btn am-btn-danger am-btn-sm")[0].parentNode;
  51. locations.appendChild(button);
  52. //重新命名这个栏目
  53. document.getElementsByClassName("am-form-field")[0].placeholder = "输入题号或题目名";
  54. document.getElementsByClassName("am-form-field")[0].onkeyup = function(event){if(event.keyCode === 13){sName();}};
  55. document.getElementsByClassName("lg-article lg-index-stat")[0].getElementsByTagName("h2")[0].innerHTML = "输入题号或名字跳转";
  56. })();

QingJ © 2025

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