Greasy Fork is available in English.

Atcoder Title Copy

Atcoderの問題のページに問題タイトルをクリップボードにコピーするボタンを追加します

Od 17.10.2021.. Pogledajte najnovija verzija.

  1. // ==UserScript==
  2. // @name Atcoder Title Copy
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Atcoderの問題のページに問題タイトルをクリップボードにコピーするボタンを追加します
  6. // 拡張子を問題タイトルの最後につけることも可能です
  7. // @author sin471
  8. // @match https://atcoder.jp/contests/*/tasks/*
  9. // @grant none
  10.  
  11. // ==/UserScript==
  12.  
  13. /* ユーザー設定項目 */
  14. /*
  15. A - AtCoder → A - AtCoder.js
  16. のように、デフォルトで拡張子をつける場合は、
  17. ダブルクオテーションの中に拡張子を入力
  18. */
  19. const extension = "";//ex: ".js"
  20.  
  21. /*
  22. Copied!を表示する時間を変更
  23. デフォルトでは1500ms(1.5秒)
  24. */
  25. const sleepTime = 1500
  26. /* 設定項目終わり */
  27.  
  28.  
  29. function copy() {
  30. var title = document.getElementsByClassName("h2")[0];
  31. //改行文字を削除
  32. var text = title.firstChild.textContent.trim();
  33. //ユーザーの設定した拡張子を追加
  34. text += extension;
  35. navigator.clipboard.writeText(text);
  36. };
  37.  
  38. // ミリ秒間待機する
  39. function sleep(ms) {
  40. return new Promise(resolve => setTimeout(resolve, ms));
  41. }
  42.  
  43. async function notifyCopied(a) {
  44. a = this.name;
  45. a.textContent = "Copied!";
  46. await sleep(1500);
  47. a.textContent = "Copy";
  48. };
  49.  
  50. function create_button() {
  51. var parent = document.getElementsByClassName("h2");
  52. var a = document.createElement("a");
  53. a.textContent = "Copy";
  54. //AtcoderのCopyボタンと同じCSSを適用
  55. a.setAttribute("class", "btn btn-default btn-sm");
  56. parent[0].appendChild(a);
  57. a.addEventListener('click', copy, false);
  58. //ボタン内のテキスト内容を一定時間"Copied!"に書き換え
  59. a.addEventListener('click', { name: a, handleEvent: notifyCopied });
  60. };
  61. create_button();