atcoder_all_open

問題Tabの隣に全ての問題を(ワンクリックで)開く全ての問題Tabを作成します。うまく動かない場合はatcoder上でのポップアップ制限を外して下さい

当前为 2021-05-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name atcoder_all_open
  3. // @namespace jp.misw
  4. // @author hotman
  5. // @description 問題Tabの隣に全ての問題を(ワンクリックで)開く全ての問題Tabを作成します。うまく動かない場合はatcoder上でのポップアップ制限を外して下さい
  6. // @version 1.0.7
  7. // @include https://atcoder.jp/contests/*
  8. // @exclude https://atcoder.jp/contests/
  9. // @exclude https://atcoder.jp/contests/archive
  10. // @grant none
  11. // @description 問題Tabの隣に全ての問題を(ワンクリックで)開く全ての問題Tabを作成します。うまく動かない場合はatcoder上でのポップアップ制限を外して下さい
  12. // ==/UserScript==
  13. function toURL(){
  14. var url=location.href;
  15. var test_name=location.href.split('/')[4];
  16. if(url.match(/atcoder.jp\/contests\/..*\/tasks/) != null ) {
  17. var cnt=document.getElementsByClassName("table table-bordered table-striped")[0].children[1].childElementCount;
  18. for(var i=0;i<cnt;i++){
  19. window.open('https://atcoder.jp/contests/'+test_name+'/tasks/'+test_name+'_'+String.fromCharCode('a'.charCodeAt(0)+i));
  20. }
  21. }else{
  22. window.open('https://atcoder.jp/contests/'+test_name+'/tasks\/?all_open=yes');
  23. }
  24. }
  25. function all_open(){
  26. var url=location.href;
  27. console.log(url);
  28. if(url.match(/all_open=yes/) != null ){
  29. toURL();
  30. window.open('about:blank','_self').close();
  31. }else{
  32. var parent=document.getElementsByClassName("nav nav-tabs")[0];
  33. var add=document.createElement("li");
  34. parent.insertBefore(add,parent.children[2]);
  35. var a=document.createElement("a");
  36. add.appendChild(a);
  37. a.textContent="全ての問題";
  38. a.setAttribute("href","javascript:void(0);");
  39. a.addEventListener('click',toURL, false);
  40. }
  41. }
  42. all_open();