AtCoderUserSearchForm

add form for user search

Version vom 23.09.2019. Aktuellste Version

  1. // ==UserScript==
  2. // @name AtCoderUserSearchForm
  3. // @namespace https://github.com/refine-P
  4. // @version 1.0.1
  5. // @description add form for user search
  6. // @author fine
  7. // @license MIT
  8. // @include https://atcoder.jp/
  9. // @include https://atcoder.jp/?lang=*
  10. // ==/UserScript==
  11.  
  12. /*
  13. javascriptをまともに書いたことがない人間が書いたので、
  14. 気になる所があれば、Twitterとかで教えていただければ幸いです。
  15. */
  16.  
  17. // ユーザ検索のフォームを挿入する
  18. // http://kimizuka.hatenablog.com/entry/2014/09/12/095957
  19. var addUserSearchHTML = [
  20. '<form class="navbar-form navbar-left">',
  21. ' <div class="form-group input-group input-group-sm" style="margin-top:3px;">',
  22. ' <input type="text" class="form-control" id="user_search", placeholder="User Search">',
  23. ' <div class="input-group-btn">',
  24. ' <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>',
  25. ' </div>',
  26. ' </div>',
  27. '</form>'
  28. ].join("\n");
  29.  
  30. var target = document.getElementById('navbar-collapse').getElementsByTagName('ul')[0];
  31. target.insertAdjacentHTML('afterend', addUserSearchHTML);
  32.  
  33. // ユーザ検索の項目を取得
  34. var userSearch = document.getElementById('navbar-collapse').getElementsByTagName('form')[0];
  35.  
  36. // 言語に応じてplaceholderを変更
  37. var lang = document.getElementsByTagName('meta')[1].content; // 使用言語を取得
  38. if (lang == 'ja') userSearch.getElementsByTagName('input')[0].placeholder = 'ユーザ検索';
  39.  
  40. // ユーザ検索機能の追加
  41. userSearch.addEventListener('submit', function(event) {
  42. event.preventDefault();
  43.  
  44. var base = "https://atcoder.jp/users/";
  45. var userName = userSearch.user_search.value;
  46. var url = base + userName;
  47.  
  48. // ユーザーがいるかどうかチェックして、
  49. // いなかったらページをいい感じにするやつがやりたいが一旦保留
  50. // とりあえず、何も考えずにユーザー名をくっつけて遷移
  51. window.location.href = url;
  52. }, false);